找不到或无法加载主类的解决以及classpath的配置

问题描述①:
环境描述
  1. /JAVA_HOME环境变量已经配置好了(javac , java等命令能够正常使用)
  2. classpath环境变量设置为D:\
  3. F盘下有一个helloworld.java(内部无package语句),并且通过javac命令编译成helloworld.class文件
问题:命令行输入java helloworld结果是

错误: 找不到或无法加载主类 helloworld

问题解决①:

很显然,classpath不能被配置为D:\,不然虚拟机会到D:\路径下寻找helloworld.class,直接将classpath环境变量删除即可(或者设置成F:\)

问题描述②:
环境描述:
  1. /JAVA_HOME环境变量已经配置好了(javac , java等命令能够正常使用)
  2. classpath环境变量已经被删除
  3. 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

你可能感兴趣的:(找不到或无法加载主类的解决以及classpath的配置)