我的代码在 OSX 上编译并且运行良好(编译器版本 1.6)。但是当我将它复制到远程ubuntu时。我无法运行它。
当我运行时
java TPCC.class
我遇到了这样的异常。(顺便说一下 TPCC.class 在默认包中)
Exception in thread "main" java.lang.NoClassDefFoundError: TPCC/class
Caused by: java.lang.ClassNotFoundException: TPCC.class
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)
Could not find the main class: TPCC.class. Program will exit.
以及我在 ubuntu 上的 java 版本:
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) Client VM (build 17.0-b16, mixed mode, sharing)
它也是 1.6,我认为它适合编译的二进制文件。我该如何解决这个问题?
最佳答案
问题出在你运行程序的方式上。编译后的java调用
ClassName.java
将是ClassName.class。你应该像这样运行它
"java ClassName"
。您不应该将其运行为
"java ClassName.class"
这里发生的事情是这样的。当您将其作为 java ClassName.class 运行时,JVM 会尝试在名为“ClassName”的包中查找不存在的名为“class”的 ClassName。所以它会抛出NoClassDefFoundError。
关于jvm - (java)找不到主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574022/