Java 编译时如何指定类路径
源java文件使用系统库和第三个库 第三方jar文件位于./lib下 使用的系统库/类:Java 编译时如何指定类路径,java,classpath,Java,Classpath,源java文件使用系统库和第三个库 第三方jar文件位于./lib下 使用的系统库/类: import java.io.UnsupportedEncodingException; import java.util.Properties; import java.io.IOException; import java.io.FileInputStream; 此命令运行正常: javac.exe -g .\jms\example\SimpleDemo.java 但是,如果我将类路径指定为以下内容
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import java.io.IOException;
import java.io.FileInputStream;
此命令运行正常:
javac.exe -g .\jms\example\SimpleDemo.java
但是,如果我将类路径指定为以下内容,则以下变体不起作用:
-cp .;%JAVA_HOME%
-cp .;%CLASSPATH%;%JAVA_HOME%;.\lib\*.jar
这里指定类路径有什么问题
我想知道compile不需要指定类路径,它只在运行生成的类文件时才需要,我错了吗?这里是要点:
类路径中必须有通配符*,而不是*.jar
javac.exe -classpath .\lib\* -g .\jms\example\SimpleDemo.java
.\lib*.or.\lib*.jar or.\lib不工作
系统库不需要添加到类路径中
根据该文件:
包含*的类路径项与.class文件不匹配
通配符*只能引用jar文件
“类路径告诉JDK工具和应用程序在哪里可以找到第三方和用户定义的类”
这意味着,Java系统库不需要类路径
以下表示类路径中的目录仅用于.class文件
对于未命名包中的.class文件,类路径以包含.class文件的目录结尾
对于命名包中的.class文件,类路径以包含“root”包(完整包名中的第一个包)的目录结尾。关于“我不知道编译不需要指定类路径…”
如果库没有在env变量classpath中指定,javac肯定需要指定classpath,但是系统库不需要位于classpath中,因为javac命令可以自己识别