关于Window:Java找不到或加载主类(已设置的路径和类路径)

Java “Could not find or load main class” (PATH and CLASSPATH Already Set)

本问题已经有最佳答案,请猛点这里访问。

我在命令行上运行Java的问题。我查了很多其他问题,没有一个能解决我的问题。

我用的是Windoze 10 x64

安装在C:\Program Files\Java上,我有以下文件:

jdk1.8.0_121jre1.8.0_121

我已经设置了JAVA_HOMEPATHCLASSPATH如下:

  • JAVA_HOME as C:\Program Files\Java\jdk1.8.0_121

  • PATH as %JAVA_HOME%/bin

  • CLASSPATH as %JAVA_HOME%/lib

这是系统变量的当前配置。我尝试了很多不同的配置,但似乎没有帮助。例如添加到路径%JAVA_HOME%\jre1.8.0_121\bin。似乎没有什么帮助。

如果我运行java -versionjavac -version,它们会显示当前安装的版本。

我还可以编译,例如:javac HelloWorld.java成功。

当我尝试java HelloWorld时,我得到了Could not find or load main class HelloWorld

这是HelloWorld.java文件:

1
2
3
4
5
    public class HelloWorld{
        public static void main(String [] args){
            System.out.println("Hello World!");
        }
    }

我花了2个多小时想弄清楚。我确信这是一个新手错误,但老实说,我只是想把它设置好,这样我就可以开始学习Java了。

我可以使用EDCOX1×17的控制台运行Java,而不是直接在CMD上运行Java。

如果你能像li5那样引导我,我会非常感激,我真的在寻找解决方案,看了关于如何设置系统变量的视频,但是它什么也没有产生。

如果您需要更多信息,我很乐意提供,谢谢。

编辑:好的,问题解决了。感谢@azurefrog和@mirmdasif帮助我解决问题。

正如您在这里和下面阅读关于azurefrog的评论和mirmdasif的回复,您需要将当前的工作目录添加到CLASSPATH中。

通过在CLASSPATH中添加.点,将当前工作目录添加到CLASSPATH中。

所以CLASSPATH应该是这样的:.;%JAVA_HOME%/lib(注意.后接分号;


问题出在你的CLASS_PATH变量上。

The preferred way to specify the classpath is by using the -cp command line switch. This allows the CLASSPATH to be set individually for each application without affecting other applications

classpath变量的默认值是".",这意味着只搜索当前目录。如果指定classpath变量,则将覆盖默认值。

如果要将classpath设置为环境变量,可以在cmd提示下运行以下命令(记住开头的点)。

1
C:> set CLASSPATH=.;C:\Program Files\Java\jdk1.8.0_121\lib\*

有关更多信息,请访问http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html


只要你得到以下信息,就一直更新类路径中的环境变量:错误:无法找到或加载主类xxx

然后浏览到C:程序文件javajRe1.80y181


有时会发生。如果需要删除java.exe,您应该尝试在C:\Windows\System32中找到它。

示例:Java Windows 7系统32文件夹JavaEXE