Eclipse 4.5.1。 (MARS.1)找不到方法:setDefaultEditor

时间:2015-10-13 19:47:16

标签: java eclipse eclipse-plugin

我有一个曾经与Eclipse Indigo,Kepler,Luna和Mars(4.5)合作的插件。它支持Frege编程语言(http://www.frege-lang.org/fregide/)。它基于IMP框架,遗憾的是,它不再维护(我没有源代码)。

今晚我检查了更新,它找到了Eclipse 4.5.1。 更新后,eclipse有一个花哨的新闪屏,上面写着“MARS.1”。

然而它不能再初始化插件了!

在错误日志中,我收到消息:

Plug-in "frege.ide" was unable to instantiate class "frege.imp.builders.FregeBuilder".

并且堆栈跟踪似乎表明某些方法已经从Eclipse API中消失了:

java.lang.NoSuchMethodError: org.eclipse.ui.internal.registry.FileEditorMapping.setDefaultEditor(Lorg/eclipse/ui/internal/registry/EditorDescriptor;)V
    at org.eclipse.imp.language.LanguageRegistry.addUniversalEditorMappings(LanguageRegistry.java:393)
    at org.eclipse.imp.language.LanguageRegistry.initializeRegistryAsNeeded(LanguageRegistry.java:268)
    at org.eclipse.imp.language.LanguageRegistry.findLanguage(LanguageRegistry.java:206)
    at frege.imp.builders.FregeBuilderBase.<clinit> (FregeBuilderBase.java:53)
    ...

以下是我的问题:

  1. 有人知道为什么这种方法消失了吗?
  2. 如何限制我的插件安装到LUNA,KEPLER和INDIGO?
  3. 是否有可能提供一个假的setDefaultEditor方法,该方法可以执行现在必须完成的任何操作来注册插件的编辑器?

1 个答案:

答案 0 :(得分:1)

setDefaultEditor方法仍然存在于FileEditorMapping中,但它现在需要IEditorDescriptor个参数而不是EditorDescriptor。这将导致NoSuchMethodError。由于此类是内部类,因此不属于API,因此这是一个有效的更改。

根据IMP Wiki IMP项目已移至github project,您可以从那里获取最新代码(或至少获取源代码)。