Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 找不到主类HelloWorld_Java - Fatal编程技术网

Java 找不到主类HelloWorld

Java 找不到主类HelloWorld,java,Java,我在以下文件夹C:\ProgramFiles\Java中安装了Java 1.7.0。我的操作系统是带有Service pack 3的Windows XP(2002版) 我设置的环境变量是: CLASSPATH:C:\ProgramFiles\Java\jdk1.7.0\jre\lib\rt.jar 路径:C:\ProgramFiles\Java\jdk1.7.0\bin JAVA_HOME:C:\Program Files\JAVA 我在这里给出了系统中的类名 接下来,我编写了一个程序Hel

我在以下文件夹
C:\ProgramFiles\Java
中安装了Java 1.7.0。我的操作系统是带有Service pack 3的Windows XP(2002版)

我设置的环境变量是:

  • CLASSPATH
    C:\ProgramFiles\Java\jdk1.7.0\jre\lib\rt.jar

  • 路径:
    C:\ProgramFiles\Java\jdk1.7.0\bin

  • JAVA_HOME
    C:\Program Files\JAVA

我在这里给出了系统中的类名

接下来,我编写了一个程序HelloWorld.java:

import java.io.*;

class HelloWorld
{
    public static void main(String[] args) 
    {
        System.out.println("Hello World!");
    }
}
当我使用
javac HelloWorld.java进行编译时,它编译得很好

但是在我发布
java HelloWorld
之后,我遇到了以下错误:

Error: Could not find main class HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:198)

Caused by: java.lang.ClassNotFoundException: HelloWorld
        at java.net.URLClassLoader$1.run(URLClassLoader.java:299)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:288)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:287)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:422)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:325)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:355)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:195)
经过一番搜索之后,我发现环境变量中可能有问题。我试着玩那个,但运气不好


我甚至重新启动了机器,然后再次尝试运行,但命运相同。

您没有设置包含已编译类的类路径<代码>java
如果不告诉它在哪里查找,则找不到任何类

java -cp [compiler outpur dir] HelloWorld

顺便说一句,您不需要按原来的方式设置类路径。

告诉它在哪里查找您的类:它在“.”中,这是当前目录:

java -classpath . HelloWorld

无需设置
JAVA\u HOME
CLASSPATH
,在这种情况下,如果从命令行启动JAVA和javac,则不需要设置
JAVA\u HOME
。但是
JAVA\u HOME
应该指向真正的jdk目录,在您的例子中是
C:\Program Files\JAVA\jdk1.7.0

我从不在构建脚本之外使用
CLASSPATH
环境变量,尤其是不使用全局定义的环境变量。
-cp
标志更好。但是在您的情况下,由于不需要额外的库(
rt.jar
不算),所以不需要类路径声明。缺少的
-cp
相当于
-cp.
这就是您需要的)


HelloWorld
类需要声明为
public
。这实际上可能是你的问题的原因。(我很确定,一个源文件需要一个公共类…或者最多是一个公共类?

您可以向类路径添加“.”以指定当前目录,或者按照unbeli建议的方式在运行时手动添加它。

Java找不到编译的类文件(HelloWorld.class)的位置。如果在运行java.exe时没有给出
-cp
-CLASSPATH
选项,它将使用
CLASSPATH
环境变量中的目录和JAR文件进行搜索

类路径
中不需要rt.jar,这些仅适用于较旧版本的Java。您可以不定义它,而使用当前工作目录,或者只添加
(一个点),用“;”分隔,指向
CLASSPATH
变量以指示当前目录:

类路径:
。;C:\…\some.jar

或者,您可以使用
-cp
-classpath
选项:

java -cp . HelloWorld
而且,正如Andreas所写,
JAVA\u HOME
不是JAVA所需要的,只是对于某些第三方工具,如ant(但应该指向正确的位置)。

只需从环境变量中删除“classpath”。然后尝试运行:

java HelloWorld 

这应该很好。我也有同样的问题。也许,问题在于您使用不同的Java版本编译和执行了该类

确保编译器的版本与命令“java”相同:

javac -version

java -version
在Linux中,使用

sudo更新备选方案——配置java


更改Java的版本。

put。;开始时在类路径值处..它将开始工作..这是因为它在类路径中搜索路径变量中提到的类文件。

我也遇到了同样的问题

实际上,这个问题是由于您的程序
.class
文件未保存在该目录中而引起的。从环境变量中删除类路径(不需要为简单Java程序设置类路径),然后重新打开cmd提示符,然后编译并执行


如果仔细观察,
.class
文件将保存在同一位置。(我不是专家,我也是基本编程员,如果我的句子中有任何错误,请忽略它:-)

看起来您已经正确地完成了所有设置,但可能有一个方面会导致问题

检查“CLASSPATH”变量的值,并确保最后保持

注: 表示结束分隔符
用于在末尾包含现有路径

只是提醒一下:jdk 7尚未正式稳定。因此,如果有什么有趣的事情,请始终记住,您可能希望使用jdk 6重新编译。。。但这不是jdk 7的问题。AFAIK jdk 7是官方的,您是否混淆了8?删除类路径环境变量。然后尝试
HelloWorld
不公开不会导致此问题。除此之外,这是正确的。哇,神奇!我在胡闹,没有结果,但这立刻奏效了!多谢各位@我也有同样的问题,令人惊讶的是这解决了它。我只是好奇。我正在看Lynda.com的Java教程,我做的和他完全一样的事情,他的作品(他只在Java HelloWorld中输入),我的没有(我有这个问题)。为什么会这样?他做了什么才不用打字呢?谢谢。