在CMD下用java命令出现“找不到或无法加载主类”问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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
求大大们告知究竟哪里出了问题。。。
这样写: java -cp ../ hellojava.hello
或者用绝对路径: java -cp E:/Workspace/hellojava/src hellojava.hello追问
绝对路径的确运行的出来!
只是我还想知道原来那样写究竟哪里出了问题呢?
因为是新手,所以我想知道到底错在哪里,不然以后可能也会错...
是不是应该在java后面跟package名呢?
然后应该写成E:/Workspace/hellojava/src>java hellojava.hello 这样吗?
参数-cp(-classpath)的意思是 会在-cp指定的位置找你要运行的class文件,比如你这个:
java -cp E:/Workspace/hellojava/src hellojava.hello
hellojava.hello这个你可以看做是hellojava/hello.class,
所以它就会在E:/Workspace/hellojava/src/hellojava目录下找你这个hello.class文件了 参考技术A
有两种办法:
(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
public class hello
public static void main(String[] args)
System.out.println("Hello World!");
参考:java命令:java命令错误: 找不到或无法加载主类
参考技术B 你是否在运行cmd之后才改的classpath环境变量?这样需要重启cmd的。 参考技术C 对于class文件,应该是javac hello 参考技术D 类名首字母最好大写Hello在CMD下运行编译过的java文件,用java命令出现“找不到或无法加载主类”问题
网上说啥的都有,在此我总结了一下,然后我最近遇到的一种情况网上好像没人遇到过,在此贴出来
1,环境变量,一般能编译文件,那就不是环境变量的额问题
2,未加包名,比如aaa包下面的hello.java 编译过后hello.class 运行时要这样写java aaa.hello
3,也是我遇到的一种情况,文件路径当中有中文,后来把文件夹名字改成英文名就解决了。
以上是关于在CMD下用java命令出现“找不到或无法加载主类”问题的主要内容,如果未能解决你的问题,请参考以下文章
在CMD下运行编译过的java文件,用java命令出现“找不到或无法加载主类”问题
Java 命令行运行java程序,出现“找不到或无法加载主类 ”的注意事项