Eclipse rcp类加载器地狱:移动的类在编译时仍然可见但不再在运行时可见

时间:2009-07-30 13:59:29

标签: java eclipse eclipse-plugin osgi

我对eclipse 3.5 rcp应用程序有一个奇怪的新问题:一切正常,然后我改变了运行系统并将一个类从一个插件移动到依赖插件。没什么大问题,但突然之间应用程序抱怨找不到类的异常(或NoClassDefFoundError - 不确切知道,但会查找并编辑帖子......)

我加倍,三倍,...检查我所知道的所有内容,并确保清单包含具有正确版本号的依赖项,并且该包已在另一个插件中正确导出。 Eclipse jdk没有抱怨(没有编译器错误/警告)但是当我调试到实例化类的时候并使用'CTRL + SHIFT + I'检查'new MyClass()'语句时,inspectors工具提示sais ,它无法解决该类。

非常感谢任何帮助,提示和鼓励评论!

2 个答案:

答案 0 :(得分:1)

我在Eclipse 3.5 Galileo RCP应用程序中遇到了NoClassDefFoundError,我在一个插件中有一个src / java文件夹,需要导出一个包供另一个插件使用。

我的解决方案结果是将bin文件夹作为运行时类路径的一部分。通常只需要包括。文件夹中。

答案 1 :(得分:0)

只是偶然解决了这个问题(并且不知道这是一个错误还是一个功能......)

我将类移入的插件项目有一个类似maven的文件夹结构,其中包含src / main / java和src / test / java,这两个文件夹都定义为源文件夹。

仅仅因为我想尝试几乎所有东西,我将这个结构改回了典型的eclipse结构,只有src作为单个源文件夹。

而且,在另一个'项目清理'之后,它再次运行。奇怪...?

修改

感谢提示,文件夹结构在这篇文章中只是一个错字。

经过更多的努力 - 我非常肯定这是一个日食问题。在如上所述“解决”之后,第二天应用程序无法加载其他类 相同的插件,我认为,在重新启动Galileo工作台后,问题就消失了。