JAVA 的classpath、path详解

2018-08-05  本文已影响8人  汉寿周杰伦

大二下学习java的时候就没有注意一些细节上的问题,刚刚同学问了我给简单的怎么执行.class文件都犯了愁。报错找不到或无法加载主类,上网的博客整理了一下发现自己对于classpath真的是没有完全理解,特此整理。

CLASSPATH的作用:

classpath是指定你在程序中所使用的类(.class)文件所在的位置,就如在引入一个类时:import javax.swing.demo这句话是告诉编译器要引入javax.swing这个包下的demo类,而classpath就是告诉编译器该到哪里去找到这个类(前提是你在classpath中设置了这个类的路径);

如果我们想要编译在当前目录下找。就加上“.”,如:.;C:\Program Files\Java\jdk,这样编译器就会到当前目录和C:\Program Files\Java\jdk\去找javax.swing.demo这个类;

因为现在的开发环境很智能,像是intellij和eclipse写Java的话,不设classpath也没关系,因为ide会有自己的配置;

My error:

直接在桌面新建了一个程序hello.java:

public class hello{
    public static void main(String[] args) {
        System.out.println("Hello java!");
    }
}

然后打开cmd命令行运行编译这个.java文件:

C:\Users\zm>javac C:\Users\zm\Desktop\hello.java

之后就在桌面直接生成了一个hello.class文件,之后年轻的我以为可以像编译java文件那样直接用文件的绝对路径来直接运行class文件,结果:

C:\Users\zm>java C:\Users\zm\Desktop\hello
错误: 找不到或无法加载主类 C:\Users\zm\Desktop\hello
原因: java.lang.ClassNotFoundException: C:\Users\zm\Desktop\hello

直接分析错误原因吧,java命令后面接的应该是一个类名,我这儿的话就是hello这个类
java命令运行.class文件不能直接用它的绝对地址。
这里我们的当前路径是:C:\Users\zm>,由于之前在classpath中设置了.;这个路径,所以就可以告诉编译器在当前目录下找这个hello类去运行它,但是我们的hello.class并不是在User\zm路径下的呀,所以如果想解决这个问题我们应该先通过命令行cd跳转到class文件所在路径,然后再执行它:

C:\Users\zm>cd Desktop

C:\Users\zm\Desktop>java hello
Hello java!

C:\Users\zm\Desktop>

可以看到就运行成功了,总结一下classpath就是告诉编译器该去哪去找class文件!要注意的是路径问题。

PATH的作用:

path是系统用来指定可执行文件的完整路径,即使不在path中设置JDK的路径也可执行Java文件,但必须把完整的路径写出来,如:

C:\Program Files\Java\jdk-10.0.2\javac C:\Users\zm\Desktop\hello.java。

java的各种操作命令是在其安装路径中的bin目录下,所以在path中设置了JDK的安装目录后就不用再把java文件的完整路径写出来了,它会自动去path中设置的路径中去找:

javac C:\Users\zm\Desktop\hello.java。

以上。

上一篇下一篇

猜你喜欢

热点阅读