美文网首页
JAVA 的classpath、path详解

JAVA 的classpath、path详解

作者: 汉寿周杰伦 | 来源:发表于2018-08-05 09:50 被阅读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。
    

    以上。

    相关文章

      网友评论

          本文标题:JAVA 的classpath、path详解

          本文链接:https://www.haomeiwen.com/subject/mxavvftx.html