有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用cmd提示符运行java程序时出现“找不到或加载主类”错误

我正在运行一个简单的“HelloWorld”程序。我在命令提示符中遇到此错误:

Could not find or load main class 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!!");
  }
}

共 (6) 个答案

  1. # 1 楼答案

    当主类位于包中时,需要按如下方式运行它:

    java <packageName>.<MainClassName>
    

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

    java org.tij.exercises.HelloWorld 
    
  2. # 2 楼答案

    因为您是从命令提示符运行它,所以需要确保classpath是正确的。如果已经设置了,则需要重新启动终端以重新加载系统变量

    如果未使用-classpath-cp并且未设置CLASSPATH,则使用当前目录(.),但是在运行.class文件时,您需要位于由Java package name文件夹组成的文件夹中

    因此,将.class文件放在./target/classes/com/foo/app/App.class中,有以下几种可能性:

    java -cp target/classes com.foo.app.App
    CLASSPATH=target/classes java com.foo.app.App
    cd target/classes && java com.foo.app.App
    

    您可以通过打印CLASSPATH变量来检查类路径:

    • Linux:echo $CLASSPATH
    • Windows:echo %CLASSPATH%

    其条目之间用:分隔

    另见:How do I run Java .class files?

  3. # 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. # 4 楼答案

    我也有同样的问题,我的有点不同,虽然我没有包名。我的问题是类路径,例如:

    C:\Java Example>java -cp . HelloWorld 
    

    Java的-cp选项,从我的经验(不多)可以看出,但是我在尝试不同的方法时遇到了大约20次错误,直到我声明类路径,我收到了相同的错误。维什兰特这样说是正确的。表示当前目录

    如果您需要有关java选项的更多信息,请输入java -?java -help,我认为这些选项不是可选的

    我只是做了更多的研究,我发现了一个详细介绍CLASSPATH的网站。CLASSPATH必须设置为环境变量;到当前目录<>;。可以从windows中的命令行进行设置:

    // Set CLASSPATH to the current directory '.'
    prompt> set CLASSPATH=.
    

    添加新的环境设置时,需要在启用变量之前重新启动。但是,您可以在命令提示下进行设置。它也可以像我在开头提到的那样设置。有关更多信息,如果您使用的是其他操作系统,请选中:Environment Variables

  5. # 5 楼答案

    你的CLASSPATH值是多少

    可能是这样的:

     .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 
    

    我猜您的值不包含这个.;

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

    这可能有效


    例如,文件HelloWorld.java位于路径:D:\myjavatest\org\yz\test,其package为:org.yz.test

    现在,您位于CMD行的路径D:\myjavatest\
    键入以下命令以对其进行编译:

    javac org/yz/test/HelloWorld.java
    

    然后,键入以下命令以运行它:

    java org.yz.test.HelloWorld
    

    你可以得到你想要的

  6. # 6 楼答案

    这个错误的一个原因可能是

    Could not find or load main class <class name>

    可能您将类名用作不同的名称,并使用另一个名称保存类名。您可以使用除类名以外的其他名称保存java源文件名。例如:

    class A{
        public static void main(String args[]) {
            System.out.println("Hello world");
        }
    }
    

    您可以另存为Hello.java,但是

    编译:javac Hello.java

    这将在同一位置自动生成.class文件

    现在运行:java A