找不到或无法加载主类、JAVA_HOME、PATH、CLASSPATH

来源:互联网 发布:点对点网速测试软件 编辑:程序博客网 时间:2024/06/16 02:46

  刚开始学习java的时候,需要配置JAVA_HOME、PATH、CLASSPATH。只是按照步骤一步步的配置,不知道是用来干嘛的。学习阶段一直是云里雾里,搞不太清楚。现在回过头来想想,有种豁然开朗的感觉。

  先说说JAVA_HOME。可以理解为定义一个叫JAVA_HOME的全局变量,给他赋值一个绝对路径。绝对路径具体是你jdk的安装目录。安装jdk时每个人选的安装路径不一样,所以需要把这个路径赋值给JAVA_HOME。JAVA_HOME的配置会被其他程序读取,比如mvn。PATH、CLASSPATH会引用JAVA_HOME。以后你升级jdk的版本后,比如从1.6升级为1.8,只要更改一下这个配置就可以了。如果把绝对路径写在PATH、CLASSPATH里,每次切换jdk的版本都得手动去改里面的路径。

  PATH就是用来告诉系统去哪找javac、java等这些命令。一般都是在%JAVA_HOME%/bin下面。bin应该是binary的意思,二进制文件,一般软件的可执行文件都放在这个目录下面。

  CLASSPATH是告诉java命令去哪找字节码文件、jar包。一般都会配置到jdk的lib目录和jre的lib目录。

  比如你在/home/cj,目录下面执行javac来编译HelloWorld.java,编译成功后会生成HelloWorld.class,现在你执行java HelloWorld是没有问题的。如果你在/home目录执行java HelloWorld,就会报“找不到或无法加载主类”的错误。这时候有三种办法:

  一、在执行java命令的时候指定字节码的位置。具体为java -classpath /home/cj HelloWorld。通过-classpath告诉java命令字节码在哪。

  二、在CLASSPATH路径中把/home/ukd加进去。

  三、把字节码放到CLASSPATH指定的目录下。

  以上是在HelloWorld.java文件中没指定包名的情况下执行的,如果你的HelloWorld.java中指定了包名。要么把包名去掉,要么按包名新建层次相同的文件目录。

原创粉丝点击