2015-10-13 40 views
0

我有一个插件,用于Eclipse Indigo,Kepler,Luna和Mars(4.5)。它支持Frege编程语言(http://www.frege-lang.org/fregide/)。它基于IMP框架,不幸的是,它不再被维护(并且我没有源代码)。Eclipse 4.5.1。 (MARS.1)找不到方法:setDefaultEditor

今晚我检查了更新,发现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方法来完成现在必须执行的任何操作来为插件注册编辑器?
+0

你为什么直接调用'FileEditorMapping'?它是**内部**类,因此不是Eclipse API的一部分,可以随时更改。 –

+0

@ greg-449我不知道。这是IMP插件框架。 – Ingo

回答

1

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

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

+0

那么所有需要的将是重新编译IMP的东西?因为,当然,EditorDescription **是一个** IEditorDescription,或者至少我希望如此。 – Ingo

+0

是的,我认为重新编译是可以的。 –

+0

已经能够修复它切换到IMP的继任者 - 感谢您的链接,@ greg-449 – Ingo

相关问题