源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
这里指定类路径有什么问题?
我想编译并不需要指定类路径,只有在运行生成的类文件时才需要它,我错了吗?
答案 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命令可以自行识别。