(java)找不到主类

时间:2012-07-20 06:35:42

标签: jvm java

我的代码是在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,我认为它适合编译的二进制文件。我该如何解决这个问题?

3 个答案:

答案 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