Java 无法从命令行运行已编译的类

Java 无法从命令行运行已编译的类,java,Java,我在从命令行运行编译的java代码时遇到了一些问题。我已经使用IntelliJ IDE编写并编译了它(如果在IDE中完成,一切都可以正常运行),但现在希望从命令行运行它 从命令like(使用javac)编译也可以很好地工作,但运行(使用java)则不行 我几乎可以肯定这是一个类路径问题,但似乎无法解决它。在发布之前的搜索中,我发现一篇帖子告诉我运行“set PATH=\%PATH\%;”C:\Program Files\Java\jdk1.6.0\u 21\bin”命令,然后尝试运行Java。我

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

从命令like(使用javac)编译也可以很好地工作,但运行(使用java)则不行

我几乎可以肯定这是一个类路径问题,但似乎无法解决它。在发布之前的搜索中,我发现一篇帖子告诉我运行“set PATH=\%PATH\%;”C:\Program Files\Java\jdk1.6.0\u 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.
你正在做:

java -cp ... Share.class

或者如果它在一个包裹里

java -cp ... path.to.Share
您不应该提供类文件作为参数,而应该提供完全限定的类名

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

java -cp . Share

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

另见
  • (用于调用
    java
    的手册)

您也可以粘贴该命令吗?我尝试过:java-Share java-cp“C:\Program Files\java\jdk1.6.0\u 21\bin”Share和几个类似的变量在您执行的目录中是否确实有Share.class文件?可以尝试java-cp.Share(点代表当前目录)没有理由将类路径设置为java.exe的位置。只需在.class文件所在的目录中运行它,参数不带“.class”。
java -cp . Share
java Share