问题描述①:
环境描述
- /
JAVA_HOME
环境变量已经配置好了(javac , java等命令能够正常使用) -
classpath
环境变量设置为D:\
- F盘下有一个
helloworld.java
(内部无package
语句),并且通过javac
命令编译成helloworld.class
文件
问题:命令行输入java helloworld
结果是
错误: 找不到或无法加载主类 helloworld
问题解决①:
很显然,classpath
不能被配置为D:\
,不然虚拟机会到D:\路径下寻找helloworld.class
,直接将classpath
环境变量删除即可(或者设置成F:\
)
问题描述②:
环境描述:
- /
JAVA_HOME
环境变量已经配置好了(javac , java等命令能够正常使用) -
classpath
环境变量已经被删除 -
D:\javaproject\src\网络编程
目录下有一个UDPreceive.java
文件(内部有package
语句),用javac
命令将其编译成UDPreceive.class
问题:打开命令行输入cd /d D:\javaproject\src\网络编程
将当前目录转到D:\javaproject\src\网络编程
下,然后输入java 网络编程.UDPreceive
,结果是
错误: 找不到或无法加载主类 网络编程.UDPreceive
问题解决②:
因为UDPreceive.class
位于网络编程
目录下,而当前目录也是在这个文件夹,所以在当前目录下使用java
命令会报错,所以只要使用cd ..
命令将当前目录退回到src
目录再使用java 网络编程.UDPreceive
就可以正常运行了
总结:
- 对于内部有
package
语句的.java
文件,编译后需要使用java 包名.类名
来运行 - 当使用
java 包名.类名
时,如果没有设置classpath
就需要到包名的父目录下执行该命令
环境变量的设置
如果没有设置classpath
环境变量,那么我们每次执行类文件就需要使用cd
命令将当前目录调整到包名的父目录下(有package
语句的情况下),这样做很麻烦.于是我们就需要设置classpath
环境变量.
在问题②中,我们可以将classpath
环境变量设置成D:\Program Files (x86)\_Java项目\我的Java\src
,这样的话我们就可以在任意目录下使用java 网络编程.UDPreceive