无法从命令行运行已编译的.classes

时间:2010-12-07 14:55:45

标签: java

我在从命令行运行编译的java代码时遇到了一些问题。我已经编写了它并使用IntelliJ IDE编译它(如果在IDE中完成,一切运行正常),但希望现在从命令行运行它。

从命令编译(使用javac)也可以正常工作,但运行(使用java)则不行。

我几乎可以肯定这是一个类路径问题,但似乎无法修复它。从我在发布之前的搜索中我发现了一个帖子告诉我运行“set PATH = \%PATH \%;”C:\ Program Files \ Java \ jdk1.6.0_21 \ bin“命令,然后尝试运行java。我我也尝试过为-cp和-classpath找到的各种争论。错误是:

Exception in thread "main" java.lang.NoClassDefFoundError: Share/class
Caused by: java.lang.ClassNotFoundException: Share.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: Share.class.  Program will exit.

1 个答案:

答案 0 :(得分:8)

你在做:

java -cp ... Share.class

待办事项

java -cp ... Share

或者如果它在包中

java -cp ... path.to.Share

您不应该提供类文件作为参数,您应该提供完全限定的类名称。

如果您的类位于当前目录中并使用默认(空)包,则它只是

java -cp . Share

java Share

类路径不用于指向java可执行文件,它用于指向包含类文件的各种目录/ jar文件(在包结构的根目录下)。

另见