关于 CLASSPATH 和 -classpath 和 -cp

1. 作用

作用: 指定 java-解释器、javac-编译器 查找 .class或.java 文件的位置(可以是 目录、jar、zip)    多个目录时,用 : 分割

2. 区别

区别: -classpath 和 -cp 相同
        是 javac、java 命令的参数

     CLASSPATH 为环境变量
     如果配置了 CLASSPATH,启动 javac、java是会默认使用 CLASSPATH
     如果使用参数时 -classpath=path:CLASSPATH

     示例: export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/usr/local/lib/antlr-4.0-complete.jar

3. 示例: 编译时 java源文件中 引用了其他的类

1. 在 /root/up 下 创建 One.java

    // 引用了 外部类 Two
    public class One {
        public static void main(String[] args) {
            new Two().show();
            System.out.println("One启动了");
        }
    }

2. 在 /home/software 下 创建 Two.java

    public class Two {

        public void Two(){
            System.out.println("Two启动了");
    }

     public void show(){
            System.out.println("Two启动了");

    }

        public static void main(String[] args) {
            System.out.println("Two启动了");
        }
    }

3. 编译 One.java
    javac One.java

    One.java:3: 错误: 找不到符号
            new Two().show();
                ^
      符号:   类 Two
      位置: 类 One
    1 个错误

分析: 无法找到 引用 Two的java文件在哪里

3.1 编译 One.java 指定 -cp
javac -cp /home/software One.java

3.2 编译 One.java 指定 环境变量 CLASSPATH
export CLASSPATH=.:/home/software
javac One.java

4.示例 运行 一个引用了外部类的类

1. 运行 java One
Exception in thread "main" java.lang.NoClassDefFoundError: Two
        at One.main(One.java:3)
Caused by: java.lang.ClassNotFoundException: Two
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
        ... 1 more

分析: 无法找到 Two.class

2. 运行 java One 指定 -cp (指定 Two.class 所在的目录 和 One.class 所在的目录)
java -cp /home/software:./ One

3. 运行 java One 指定 环境变量 CLASSPATH
export CLASSPATH=.:/home/software
java One

Original: https://www.cnblogs.com/bajiaotai/p/16802040.html
Author: 学而不思则罔!
Title: 关于 CLASSPATH 和 -classpath 和 -cp

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685435/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球