0

我的代码在 OSX 上编译并且工作正常(编译器版本 1.6)。但是当我将它复制到远程 ubuntu 时。我无法运行它。

当我跑

java TPCC.类

我遇到了这样的异常。(顺便说一下 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,我认为它适合编译的二进制文件。我该如何解决这个问题?

4

3 回答 3

2

问题在于您运行程序的方式。编译后的java调用

类名.java

将是 ClassName.class。你应该像这样运行它

“java 类名”

. 你不应该运行它

“java 类名.class”

这里发生的事情是这样的。当您将其作为 java ClassName.class 运行时,JVM 会尝试在名为“ClassName”的包中查找名为“class”的 ClassName,但该包不存在。所以它会抛出 NoClassDefFoundError。

于 2012-07-20T07:05:08.697 回答
0

这是一个调用问题,如错误所示:应该使用 java 而不是类的文件名。错误消息试图通过声明“TPCC/class”未找到来说明这一点。

(抱歉第一次添加评论,使用了错误的字段)

于 2012-07-20T06:47:37.320 回答
0

调用 java 时指定类路径:

java -cp <path-to-jar> TPCC
于 2012-07-20T06:53:33.337 回答