您的位置:首页 > 编程语言 > Java开发

Ant编译java项目时无法导入rt.jar中的类

2015-07-23 00:00 239 查看
摘要: Ant编译java项目时无法导入rt.jar中的类

最近在使用ant做打包时发现,在引用 com.sun.org.apache.xml.internal.security.utils.Base64 类时,无法编译通过,但是在eclipse中却可以正常编译。

以下是在使用ant打包时报错部分。

[javac] [正在装入 com\eos\data\datacontext\IUserObject.class(com\eos\data\datacontext:IUserObject.class)]
[javac] E:\build\java\com\bos\rca\ccd\app\approve\pycredit\PycreditPersonalComponent.java:36: 软件包 com.sun.org.apache.xml.internal.security.utils 不存在
[javac] import com.sun.org.apache.xml.internal.security.utils.Base64;
[javac]

后在漫长的搜索中,发现有网友提出:javac在编译代码时,当他尝试从rt.jar中找寻对应的类文件时,他会默认从对应的符号表文件ct.sym (同样在jre/lib/下)中查找该类是否存在,由于ct.sym中有意或无意的遗失了部分rt.jar中的类,包括我使用的com.sun.org.apache.xml.internal.security.utils.Base64,因此导致编译报错。

解决方法就是通知javac编译器,在编译代码时,忽略该符号表ct.sym, 直接查找rt.jar,通过给javac传入对应的参数完成:-XDignore.symbol.file

<!--编译当前扩展的task类-->
<javac fork="no" encoding="UTF-8" executable="${JAVA_HOME}/bin/javac" memoryMaximumSize="1024m"
source="${javac_source_version}" target="${javac_target_version}"
destdir="E:/build/bin" debug="on" nowarn="on" deprecation="on" verbose="yes">
<classpath refid="compile_classpath" />
<compilerarg value="-XDignore.symbol.file"/>
<src path="E:/build/java" />
</javac>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ANT rt.jar