在CMD下用java命令出现“找不到或无法加载主类”问题

写了简单的hello.java程序,在cmd命令行下用javac hello.java命令编译没有问题,可以生成hello.class文件。但输入java hello命令后(文件目录和命令目录一致),提示错误:“找不到或无法加载主类”。
public class hello{ public static void main(String[] args){ System.out.println("Hello World!"); }}
另外环境设置是这样的:
JAVA_HOME D:\Java\jdk1.0.8
CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
PATH %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

求大大们告知究竟哪里出了问题。。。

package是hellojava吧?那如果在E:/Workspace/hellojava/src/hellojava这目录下运行,应该
这样写: java -cp ../ hellojava.hello
或者用绝对路径: java -cp E:/Workspace/hellojava/src hellojava.hello

追问

绝对路径的确运行的出来!
只是我还想知道原来那样写究竟哪里出了问题呢?
因为是新手,所以我想知道到底错在哪里,不然以后可能也会错...

是不是应该在java后面跟package名呢?
然后应该写成E:/Workspace/hellojava/src>java hellojava.hello 这样吗?

追答是的,运行的时候要加上package的。
参数-cp(-classpath)的意思是 会在-cp指定的位置找你要运行的class文件,比如你这个:
java -cp E:/Workspace/hellojava/src hellojava.hello
hellojava.hello这个你可以看做是hellojava/hello.class,
所以它就会在E:/Workspace/hellojava/src/hellojava目录下找你这个hello.class文件了

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-10-28

有两种办法:

(1)把java类上的package去掉,直接运行命令java hello

//package com.tt.demo;//去掉

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

(2)如果保留带有package的原代码不改,则在java目录下运行java命令。如

hello.java在我本地硬盘上目录: E:\myemo(项目名)\src\main\java\com\tt\demo 下

javac目录运行成功后,切换到目录E:\myemo(项目名)\src\main\java下,运行命令:

java com.tt.demo.hello

package com.tt.demo;

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


参考:java命令:java命令错误: 找不到或无法加载主类

第2个回答  2014-03-28
你是否在运行cmd之后才改的classpath环境变量?这样需要重启cmd的。
第3个回答  2014-03-28
对于class文件,应该是javac hello
第4个回答  2014-03-28
类名首字母最好大写Hello
相似回答