如何在编译时指定类路径

时间:2015-04-22 02:45:41

标签: java classpath

源java文件使用系统库和第3个库;

第三方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

但是如果我将classpath指定为以下内容,则以下变体的方法无效:

-cp .;%JAVA_HOME%
-cp .;%CLASSPATH%;%JAVA_HOME%;.\lib\*.jar

这里指定类路径有什么问题?

我想编译并不需要指定类路径,只有在运行生成的类文件时才需要它,我错了吗?

2 个答案:

答案 0 :(得分:0)

以下是重点:

类路径中必须有通配符*,而不是* .jar

javac.exe -classpath .\lib\* -g .\jms\example\SimpleDemo.java

。\ lib *。*或。\ lib * .jar或。\ lib不起作用;

系统库不需要添加到类路径中;

根据文件http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html

包含*的类路径条目与.class文件不匹配

通配符*只能引用jar文件;

" 类路径告诉JDK工具和应用程序在哪里可以找到第三方和用户定义的类"

这意味着,Java系统库不需要类路径;

以下表示仅在classpath中的目录仅用于.class文件;

对于未命名包中的.class文件,类路径以包含.class文件的目录结束。

对于命名包中的.class文件,类路径以包含" root"的目录结束。 package(完整包名中的第一个包)。

答案 1 :(得分:0)

关于"我想知道编译不需要指定类路径......&#34 ;;

如果未在env变量CLASSPATH中指定库,javac肯定需要指定类路径,但系统库不需要在类路径中,因为javac命令可以自行识别。