Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编译时如何指定类路径_Java_Classpath - Fatal编程技术网

Java 编译时如何指定类路径

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 但是,如果我将类路径指定为以下内容

源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
但是,如果我将类路径指定为以下内容,则以下变体不起作用:

-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命令可以自己识别