我的代码是在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,我认为它适合编译的二进制文件。我该如何解决这个问题?
答案 0 :(得分:2)
问题在于您运行程序的方式。编译的java叫
ClassName.java
将是ClassName.class。你应该像
一样运行它“java ClassName”
。你不应该把它作为
运行“java ClassName.class”
这里发生的是这个。当您以java ClassName.class运行它时,JVM尝试在名为“ClassName”的包中查找名为“class”的ClassName,该类不存在。所以它会抛出NoClassDefFoundError。
答案 1 :(得分:0)
这是一个调用问题,因为错误显示:应该使用java而不是类的文件名。 错误消息试图通过声明找不到“TPCC / class”来说明这一点。
(抱歉首先添加评论,使用了错误的字段)
答案 2 :(得分:0)
调用java时指定类路径:
java -cp <path-to-jar> TPCC