在这里,我将尝试提供尽可能多的细节,如果有些无关紧要,请原谅。
我有两个月蚀项目。项目1:com.myworkplace.parent,程序包中具有相同名称的代码。项目2:com.myworkplace.child,程序包中的代码具有相同的名称(如果有区别,我将代码从默认程序包移至该程序包)。据我所知,这两个文件都位于我的工作区文件夹中,并按照您期望的方式组织。
我使用Java Build Path-> Projects-> Add将子代添加到eclipse中父代的构建路径。父级的.classpath文件包含以下条目:
<classpathentry combineaccessrules="false" kind="src" path="/com.myworkplace.child"/>
我在父级中添加了对com.myworkplace.child.Child类的引用,将其导入,对其进行编译且没有错误,然后运行并获取:
java.lang.NoClassDefFoundError: com/myworkplace/child/Child
是什么赋予了?
编辑:父应用程序是RCP应用程序,也许是OSGI(我对RCP和相关内容确实了解不多。)有些搜索使我相信它可能与此有关。
最佳答案
由于您的应用程序是RCP应用程序,因此在编辑代码时使用的eclipse类路径与在运行时使用的OSGi类路径之间是有区别的。听起来您需要将com.myworkplace.child插件添加到com.myworkplace.parent插件的依赖项列表中。
在父项目中打开plugin.xml或META-INF / manifest.mf。 Eclipse应该打开PDE插件编辑器(基础配置文件的基于表单的编辑器)。单击底部的“依赖关系”选项卡,然后将您的子插件添加到表单左侧部分的“必需的插件”列表中。或者,您可以将com.myworkplace.child软件包添加到右侧的“导入的软件包”列表中。两者之间的区别超出了此答案的范围,但由于您(希望)朝着正确的方向发展,因此您可以在eclipse文档中对其进行阅读。