Java 获取错误“;无法找到或加载主类HelloWorld“;

Java 获取错误“;无法找到或加载主类HelloWorld“;,java,Java,我有一个简单的代码: public class HelloWorld{ public static void main(String[] args){ System.out.println("HelloWorld"); } } 以及文件名HelloWorld.java 在命令提示下,我键入: javac HelloWorld.java java HelloWorld (同一目录) 我收到错误:“无法找到或加载主类HelloWorld” 我确信这与安装不当无关

我有一个简单的代码:

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("HelloWorld");
    }
}
以及文件名HelloWorld.java

在命令提示下,我键入:

javac HelloWorld.java

java HelloWorld
(同一目录)

我收到错误:“无法找到或加载主类HelloWorld”

我确信这与安装不当无关,因为我重新安装了jdk和jre两次

编辑:


这在之前是有效的,第二天,代码、目录或任何东西都没有更改,它开始出现错误。

在CMD中,而不是键入:

java HelloWorld
尝试键入:

java HelloWorld.class

在CMD中,不要键入:

java HelloWorld
尝试键入:

java HelloWorld.class

如果CLASSPATH环境变量的设置不正确/不适当,则可能会出现这种行为;e、 g.当前目录不在类路径上。(默认情况下是…)

试试这个:

java -classpath . HelloWorld
假设这是可行的。。。问题在于您对“类路径”概念的理解。Oracle文档很好地解释了这一点:

  • 命令文档(&C)。。。指定-classpath参数

如果CLASSPATH环境变量的设置不正确/不适当,则可能会出现这种行为;e、 g.当前目录不在类路径上。(默认情况下是…)

试试这个:

java -classpath . HelloWorld
假设这是可行的。。。问题在于您对“类路径”概念的理解。Oracle文档很好地解释了这一点:

  • 命令文档(&C)。。。指定-classpath参数
试试:
java-cp“C:\WhatEverDirectoryYourFileIsIn”HelloWorld

试试:

java-cp“C:\WhatEverDirectoryYourFileIsIn“HelloWorld

javac-version的输出是什么?您确认了
javac HelloWorld.java
的输出中没有错误吗?这是一个可疑的问题我希望他会报告错误…:)我猜javac实际上不是javac,
javac-version
的输出是什么?您确认了
javac HelloWorld.java
的输出中没有错误吗?这是一个可疑的问题,我希望他会报告错误…)我猜javac实际上不是javac…用于指定文件扩展名。因为javac将把HelloWorld.class放在HelloWorld.java的同一目录中。因此,您必须指定文件扩展名,以便CMD知道您想要运行HelloWorld.class,而不是HelloWorld.java。如果没有文件扩展名,则有两个名为HelloWorld的文件。你必须指定你知道的那个,它不一定是复杂的解决方案。很多时候,一些事情只是变成了一些愚蠢的小错误,你甚至没有意识到你犯了。所以,不要因为我试图帮助你而对我说废话@uraimoNicholas如果你用分机就不行了。它从来没有这样做过,使用
.class
是java初学者常见的错误。
java
启动器希望您给他完全限定的类名,这只是类的
+
类的名称(他在公共类之后拥有的名称)。在这种情况下,他没有包,因此
HelloWorld
就足够了。没有人给你废话,与其试图解释一个错误的答案,不如开始怀疑它是否正确,当你发现它是错误的时候编辑它。检查其他两个答案,这些答案可能是正确的,而不是这一个。@NicholasGreene-否决投票不是“给你废话”。相反,这是告诉你的首选方式。。。更重要的是,其他读者。。。这是一个糟糕的答案。在这种情况下,它是不好的,因为它显然是不正确的。我建议您只需删除您的答案,并获取代表分数。以指定文件扩展名。因为javac将把HelloWorld.class放在HelloWorld.java的同一目录中。因此,您必须指定文件扩展名,以便CMD知道您想要运行HelloWorld.class,而不是HelloWorld.java。如果没有文件扩展名,则有两个名为HelloWorld的文件。你必须指定你知道的那个,它不一定是复杂的解决方案。很多时候,一些事情只是变成了一些愚蠢的小错误,你甚至没有意识到你犯了。所以,不要因为我试图帮助你而对我说废话@uraimoNicholas如果你用分机就不行了。它从来没有这样做过,使用
.class
是java初学者常见的错误。
java
启动器希望您给他完全限定的类名,这只是类的
+
类的名称(他在公共类之后拥有的名称)。在这种情况下,他没有包,因此
HelloWorld
就足够了。没有人给你废话,与其试图解释一个错误的答案,不如开始怀疑它是否正确,当你发现它是错误的时候编辑它。检查其他两个答案,这些答案可能是正确的,而不是这一个。@NicholasGreene-否决投票不是“给你废话”。相反,这是告诉你的首选方式。。。更重要的是,其他读者。。。这是一个糟糕的答案。在这种情况下,它是不好的,因为它显然是不正确的。我建议你删除你的答案,然后拿回代表分数。你看过我答案中的参考资料了吗?这样做,你应该能够理解为什么它会起作用。提示:如果有效,您可以推断CLASSPATH环境变量一定是错误的。您阅读了我答案中的引用了吗?这样做,你应该能够理解为什么它会起作用。提示:如果有效,您可以推断CLASSPATH环境变量一定是错误的。