&引用;无法找到或加载主类“;使用cmd提示符运行java程序时出错

&引用;无法找到或加载主类“;使用cmd提示符运行java程序时出错,java,cmd,classpath,environment-variables,Java,Cmd,Classpath,Environment Variables,我正在运行一个简单的“HelloWorld”程序。我在命令提示符中遇到此错误: 无法找到或加载主类HelloWorld 我已经在系统中设置了CLASSPATH和PATH变量。在cmd提示符中,我正在保存HelloWorld程序的目录中运行。我可以看到类名和文件名相同,而且.class文件创建在同一目录中。还有什么问题 我的示例程序如下所示: package org.tij.exercises; public class HelloWorld { public static void main

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

无法找到或加载主类
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!!");
  }
}

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

java <packageName>.<MainClassName>
java org.tij.exercises.HelloWorld 

你的
CLASSPATH
值是多少

可能是这样的:

 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar 
我猜您的值不包含此

因此,添加它
完成后,重新启动CMD

这可能有效


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

现在,您位于CMD行的路径
D:\myjavatest\

键入以下命令以对其进行编译:

javac org/yz/test/HelloWorld.java
然后,键入以下命令以运行它:

java org.yz.test.HelloWorld

你可以得到你想要的

我从
CLASSPATH
中删除了
bin
。我发现我正在从
HelloWorld.java
所在的目录执行
java
命令,即:

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

因此,我移回主目录并执行:

java org.tij.exercises.HelloWorld

它起作用了,即:

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


你好,世界

使用
Java-d执行Java程序。HelloWorld
命令

当您声明包时,此命令起作用


表示当前目录/

此错误的一个原因可能是

无法找到或加载主类

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

class A{
    public static void main(String args[]) {
        System.out.println("Hello world");
    }
}
C:\Java Example>java -cp . HelloWorld 
您可以另存为
Hello.java
,但是

编译:
javac Hello.java

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


现在开始运行:
javaa

我遇到了同样的问题,尝试了这里提到的一切。 问题是,在创建类之后,我没有在eclipse中刷新我的项目。
当我刷新它时,一切正常。

我也遇到了同样的问题,我的问题有点不同,尽管我没有包名。我的问题是类路径,例如:

class A{
    public static void main(String args[]) {
        System.out.println("Hello world");
    }
}
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=.

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

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

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

因此,在
/target/classes/com/foo/app/app.class
中有
.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%
其条目之间用
分隔:


另请参见:

在win10上运行java时,我遇到了类似的问题

而不是

$ java ./hello
Error: Could not find or load main class ..hello


我也面临同样的问题。通过以下步骤解决

  • 转到包含包“org.tij.exerces”的目录(例如:在eclipse中,它可能是您的src文件夹)
  • 使用
    java org.tij.exercises.HelloWorld

对于我们很多人,至少对我来说,我认为类路径层次结构并不直观,因为我在目录结构中工作,感觉应该是这样

Java根据类的包路径(而不仅仅是文件路径)查看类的名称

如果: 我在本地目录中。/packagefoo/MainClass,或 目录up./packagefoo/,或 一个关闭。/packagefoo/MainClass/foo

命令“javapackagefoo.MainClass”正在根%CLASSPATH%上运行,这对java来说意义重大。然后它从那里遍历包名,而不是像我们这些业余程序员所期望的路径名

因此,如果我的类路径设置为%CWD%/,那么“javapackagefoo.MainClass”将起作用。 如果我将类路径设置为%CWD%/packagefoo/则无法找到packagefoo.MainClass。 如果它是“package”的成员,“javamainclass”总是毫无意义,直到我撕掉java代码“packagefoo;”
java myClass
javac -cp . org/tij/exercises/HelloWorld.java
java -cp . org/tij/exercises/HelloWorld
   public class Sample{
      public static void main(String[] args) {
        System.out.println("Hello world, Java");
      }
}