一、摘要
在Idea中可以正常运行的Java程序,在命令行中执行时出现找不到或无法加载主类的错误。解决方案是理解Java的包结构,并正确配置Java的编译和运行路径,确保在程序声明的包基目录下运行以避免加载错误。
二、思路
既然javac编译通过,说明JAVA-HOME配置没有问题
方法一:问题可能出在Path变量对应的变量值上,重新配置一下。Path对应的变量值是在原来的变量值前面加上%Java_Home%;而classpath对应的变量值应该设为 .;(注意是英文字符),但是我觉得跟classpath没有配置没有关系
方法二:环境变量都是正确的,只是编译的java源文件中,主函数public static void main(String args[]){}没有写在java源文件名所在类中。一个java源文件可以写很多类,编译的时候javac源文件之后,每个类生成一个class文件。你去运行的时候,并不一定是java源文件名,而是去找java主函数所在的那个类名。
javac编译的HelloWorld.java,生成了3个.class文件
方法三: 当前用户权限不够,使用管理员权限运行cmd窗口再试试。也可以尝试在当前cmd 运行 SET CLASSPATH=. 即可设置解释的路径为当前路径,然后再运行java HelloWorld
方法四: 源代码在某一包内,没有在根目录下,像小编的源代码是在socket包下,按照原先的办法运行是不行的,我也尝试了在编译的时候加上-d .的参数还是不行,最终实践是运行的时候加上包名即可