【发布时间】:2012-08-20 12:37:29
【问题描述】:
我有一个在 Ubuntu 12.04 上使用 Eclipse 3.7.2 开发的项目。最近,我重组了涉及在包之间移动类的类层次结构。我没有移动我的主类(“ob3.converter.Converter”),其中包含我的public static void main(String[] args) 方法。
现在,当我尝试运行它时,我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: ob3/converter/Converter
Caused by: java.lang.ClassNotFoundException: ob3.converter.Converter
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: ob3.converter.Converter. Program will exit.
我只真正使用过 Eclipse(在 java 中),它为我处理所有开销 - 因此我对这个错误或可能导致它的原因知之甚少。我已经查看了我的运行配置/类路径等,但不知道要寻找什么,但毫无结果。
谁能指出我正确的方向?我用谷歌搜索/搜索了 SO,大多数事情都在谈论清单文件,但我无法在任何地方找到它。我的工作区文件夹只包含我的源文件。
我可以验证:
- “转换器”类存在于“ob3.converter”包中。
- “转换器”类包含一个
public static void main(String[] args)方法。 - 项目属性中 Java 构建路径页面上的“源”选项卡显示“converter/lib”和“converter/src” - 这两个文件夹包含我的整个项目源。
- 在运行配置/JRE 中使用的 JRE 是“java-6-openjdk-amd64”。
- 运行配置中的 ClassPath 选项卡如下所示:
- Boostrap 条目:
- JRE 系统库 [java-6-openjdk-amd64]
- 用户条目:
- 转换器(默认类路径)
- 转换器
- 转换器(默认类路径)
- Boostrap 条目:
- Converter.java 的路径自我上次成功运行以来一直没有改变。
非常感谢任何帮助!
【问题讨论】:
-
如果您可以张贴您的 Eclipse 的屏幕截图,其中扩展了包结构并在编辑器中打开了 Converter 类。您的项目是否在包资源管理器中显示任何错误? “问题”视图中是否有任何错误?
-
您是否尝试过处理“混乱”的 Eclipse 工作区的标准技巧?刷新 (F5) 工作区。重新启动 Eclipse。关闭/打开项目。删除项目(不要检查从磁盘中删除!!!)然后重新导入。
-
当您说运行时,我假设您正在单击顶部的运行图标。尝试在包视图中右键单击 Converter 类并选择 run as -> java application。
-
尝试检查项目的运行配置?如果一个项目包含多个带有 main 方法的类,您必须从运行配置中选择应该执行哪个类的 main 方法。
-
大家好,谢谢您的建议。关闭/重新打开项目从项目图标中删除了红色感叹号。刷新项目,重新启动 Eclipse 并重新启动机器似乎没有任何改变。删除项目并重新导入即可解决问题!!!谢谢斯蒂芬 C - 将其发布为答案,我会接受它:)
标签: java eclipse noclassdeffounderror classnotfoundexception