使用cmd提示符运行java程序时出现"无法找到或加载主类"错误

use*_*702 33 java cmd classpath environment-variables

我正在运行一个简单的"HelloWorld"程序.我在命令提示符中收到此错误:

无法找到或加载主类HelloWorld.

我已经设置了CLASSPATHPATH可变系统.在cmd提示符中,我从我保存HelloWorld程序的目录运行.我可以看到类名和文件名相同,也可以.class在同一目录中创建文件.还有什么可能是问题?

我的示例程序如下所示:

package org.tij.exercises;
public class HelloWorld {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("Hello World!!");
  }
}
Run Code Online (Sandbox Code Playgroud)

Kak*_*rot 38

当Main类在包内时,您需要按如下方式运行它:

java <packageName>.<MainClassName>
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您应该按如下方式运行程序:

java org.tij.exercises.HelloWorld 
Run Code Online (Sandbox Code Playgroud)

  • 我尝试使用java org.tij.exercises.HelloWorld,我仍然得到同样的错误.没运气!! (9认同)
  • 对我有用的是从**`target/classes`**dir运行程序`java org.tij.exercises.HelloWorld`.起初我试图直接从`target/classes/org/tij/exercises`运行它,但是没有用. (4认同)

you*_*gzy 18

你有什么CLASSPATH价值?

它可能看起来像这样:

 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 
Run Code Online (Sandbox Code Playgroud)

我想你的价值不包含这个.;.

所以,添加IT.
完成后,重新启动 CMD

这可能有用.


例如,文件HelloWorld.java位于路径中:D:\myjavatest\org\yz\testpackage是:org.yz.test.

现在,你正在D:\myjavatest\CMD线上.
输入以编译它:

javac org/yz/test/HelloWorld.java
Run Code Online (Sandbox Code Playgroud)

然后,输入以运行它:

java org.yz.test.HelloWorld
Run Code Online (Sandbox Code Playgroud)

你可能会得到你想要的.


use*_*702 12

我从中移除binCLASSPATH.我发现我正在java从它所在的目录执行命令HelloWorld.java,即:

C:\Users\xyz\Documents\Java\javastudy\src\org\tij\exercises>java HelloWorld

所以我搬回主目录并执行:

java org.tij.exercises.HelloWorld

它工作,即:

C:\Users\xyz\Documents\Java\javastudy\src>java org.tij.exercises.HelloWorld

你好,世界!!