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
标签:java,javac,classpath,CLASSPATH,Two,cp,public From: https://www.cnblogs.com/bajiaotai/p/16802040.html