请告诉我这个班级宣言有什么问题:
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位于包内并且无法自行运行,这似乎很奇怪。谢谢你的帮助。
答案 0 :(得分:2)
您应该将源文件放在名为“engine”的目录中,因为这是给它的包名。
使用javac engine/ExchEngine.java
编译文件并使用java engine.ExchEngine
运行。
答案 1 :(得分:1)
您的课程为engine.ExchEngine
。某处某处正在查找test_engine.ExchEngine
,并且在未能执行此操作时导致此错误。你可能需要改变这两者才能匹配。
答案 2 :(得分:1)
这不是编译时问题,而是运行时错误。
需要更多信息。例如,你是如何尝试运行它的?在Eclipse?
如果在Eclipse中: 您可能需要清理项目。或者您可能在更改包之前尝试旧的运行配置。
答案 3 :(得分:0)
如果您使用IDE,请重新配置项目,主要是查找Main方法的位置。清洁,重建,重启,做你需要做的事情。
答案 4 :(得分:0)
在运行应用程序时指定类路径
假设编译后,您有以下目录结构:
./test_engine/ExchEngine.class
然后像这样运行:
java -cp . test_engine.ExchEngine