5

我有一个项目,我一直在 Ubuntu 12.04 上的 Eclipse 3.7.2 中开发。最近,我重组了涉及在包之间移动类的类层次结构。我没有移动包含我的public static void main(String[] args)方法的主类(“ob3.converter.Converter”)。

现在,当我尝试运行它时,我得到:

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)方法。
  • Project Properties 中 Java Build Path 页面上的“Source”选项卡显示“converter/lib”和“converter/src”——这两个文件夹包含我的整个项目源代码。
  • 运行配置/JRE 中使用的 JRE 是“java-6-openjdk-amd64”。
  • 运行配置中的 ClassPath 选项卡如下所示:
    • Boostrap 条目:
      • JRE 系统库 [java-6-openjdk-amd64]
    • 用户条目:
      • 转换器(默认类路径)
        • 转换器
  • 自从我上次成功运行以来,Converter.java 的路径没有改变。

很感谢任何形式的帮助!

4

2 回答 2

2

我认为你应该重建你的项目。您可以通过单击 Projects > Clean... 来执行此操作

有时 Eclipse 的自动构建在重构或移动类时会出现问题。

于 2012-09-14T19:36:14.993 回答
0

我遇到了同样的错误消息。对我来说,我在 linux 上,发出 java 命令的用户对类路径上的 jar 目录没有足够的权限。

于 2013-09-16T18:41:43.323 回答