Eclipse 类路径和 NoClassDefFoundError

标签 eclipse

我将尝试在这里提供尽可能多的细节,如果有些不相关,请原谅我。 我在 Eclipse 中有两个项目。项目 1:com.myworkplace.parent,代码在同名包中。项目 2:com.myworkplace.child,代码在同名包中(我将我的代码从默认包移到那个包,如果有区别的话)。据我所知,两者都位于我的工作区文件夹中,并且按照您期望的方式构建。

我已经使用 Java Build Path -> Projects -> Add 将 child 添加到 eclipse 中 parent 的构建路径。父级的 .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 插件编辑器(底层配置文件的基于表单的编辑器)。单击底部的 Dependencies 选项卡并将您的子插件添加到表单左侧部分的“Required Plug-ins”列表中。或者,您可以将 com.myworkplace.child 包添加到右侧的“导入包”列表中。两者之间的区别超出了这个答案的范围,但是您现在(希望)正在朝着正确的方向前进,因此您可以在 eclipse 文档中阅读相关内容。

关于Eclipse 类路径和 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2329293/

相关文章:

java - 在 GWT Web 应用程序中使用 WebService 客户端出现 ApiDeadlineExceededException

Java - 使二进制搜索递归

java - 当我导出 Java 程序时,为什么出现框架而不出现面板?

java - Java/Eclipse 中系统设计的好工具?

android - 在eclipse上截图

java - 如何使用 log4j 记录器在 eclipse 的控制台输出中显示 java 程序的结果?

Eclipse:显示(键盘)光标在哪里的问题?

java - 如何告诉 Eclipse 不包含项目引用,而是在本地 repo 中获取自定义依赖项的 JAR

java - 在 eclipse 中从 android 调用纯 java 代码(单独的项目)时出错

eclipse - m2eclipse:在构建依赖项时自动安装 Maven