繁体   English   中英

类声明错误(由ClassNotFoundException引起的NoClassDefFoundError)

[英]Class declaration bug (NoClassDefFoundError caused by ClassNotFoundException)

请告诉我这个班级宣言有什么问题:

ExchEngine.java

package engine;

public class ExchEngine {

    public ExchEngine() {
    }

    public static void main(String[] args) {

        ExchEngine engine = new ExchEngine();

    }
}

当我编译这个文件时,我总是得到异常:

java.lang.NoClassDefFoundError: test_engine/ExchEngine
Caused by: java.lang.ClassNotFoundException: test_engine.ExchEngine
 at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Exception in thread "main"

ExchEngine.java在包中并且无法自行运行,这似乎很奇怪。 谢谢你的帮助。

您应该将源文件放在名为“engine”的目录中,因为这是给它的包名。

使用javac engine/ExchEngine.java编译该文件,并使用java engine.ExchEngine运行它。

你的班级是engine.ExchEngine 某处某处正在寻找test_engine.ExchEngine ,并且当它无法执行此操作时会导致此错误。 你可能需要更改这两个以便它们匹配。

这不是编译时问题,而是运行时错误。

需要更多信息。 例如,你是如何尝试运行它的? 在Eclipse中?

如果在Eclipse中:您可能需要清理项目。 或者您可能在更改包之前尝试旧的运行配置。

运行应用程序时指定类路径

假设编译后,您具有以下目录结构:

./test_engine/ExchEngine.class

然后像这样运行它:

java -cp . test_engine.ExchEngine

如果您使用IDE,请重新配置项目,主要是查找Main方法的位置。 清洁,重建,重启,做你需要做的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM