使用cmd提示符运行java程序时出现“找不到或加载主类”错误
我正在运行一个简单的“HelloWorld”程序。我在命令提示符中遇到此错误:
Could not find or load main class
HelloWorld
.
我已经在系统中设置了CLASSPATH
和PATH
变量。在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!!");
}
}
# 1 楼答案
当主类位于包中时,需要按如下方式运行它:
在您的情况下,您应该按如下方式运行程序:
# 2 楼答案
因为您是从命令提示符运行它,所以需要确保classpath是正确的。如果已经设置了,则需要重新启动终端以重新加载系统变量
如果未使用
-classpath
和-cp
并且未设置CLASSPATH
,则使用当前目录(.
),但是在运行.class
文件时,您需要位于由Java package name文件夹组成的文件夹中因此,将
.class
文件放在./target/classes/com/foo/app/App.class
中,有以下几种可能性:您可以通过打印
CLASSPATH
变量来检查类路径:echo $CLASSPATH
echo %CLASSPATH%
其条目之间用
:
分隔另见:How do I run Java .class files?
# 3 楼答案
我从
CLASSPATH
中删除了bin
。我发现我正在从HelloWorld.java
所在的目录执行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
你好,世界
# 4 楼答案
我也有同样的问题,我的有点不同,虽然我没有包名。我的问题是类路径,例如:
Java的
-cp
选项,从我的经验(不多)可以看出,但是我在尝试不同的方法时遇到了大约20次错误,直到我声明类路径,我收到了相同的错误。维什兰特这样说是正确的。表示当前目录如果您需要有关java选项的更多信息,请输入
java -?
或java -help
,我认为这些选项不是可选的我只是做了更多的研究,我发现了一个详细介绍
CLASSPATH
的网站。CLASSPATH
必须设置为环境变量;到当前目录<>;。可以从windows中的命令行进行设置:添加新的环境设置时,需要在启用变量之前重新启动。但是,您可以在命令提示下进行设置。它也可以像我在开头提到的那样设置。有关更多信息,如果您使用的是其他操作系统,请选中:Environment Variables
# 5 楼答案
你的
CLASSPATH
值是多少可能是这样的:
我猜您的值不包含这个
.;
所以,添加它
完成后,重新启动CMD
这可能有效
例如,文件
HelloWorld.java
位于路径:D:\myjavatest\org\yz\test
,其package
为:org.yz.test
现在,您位于CMD行的路径
D:\myjavatest\
键入以下命令以对其进行编译:
然后,键入以下命令以运行它:
你可以得到你想要的
# 6 楼答案
这个错误的一个原因可能是
可能您将类名用作不同的名称,并使用另一个名称保存类名。您可以使用除类名以外的其他名称保存java源文件名。例如:
您可以另存为
Hello.java
,但是编译:
javac Hello.java
这将在同一位置自动生成.class文件
现在运行:
java A