Ant自动编译Java project时无法找到rt.jar的处理方法
来源:互联网 发布:手机淘宝如何打造爆款 编辑:程序博客网 时间:2024/05/17 12:19
最近在使用Ant自动化编译打包一个Java项目,执行时总是报有class找不到:
[javac] Compiling 46 source files to /A/B/C/D/build/staging/bin
[javac] .../ChangePassWordTool.java:5: package com.sun.org.apache.xml.internal.security.utils does not exist
[javac] import com.sun.org.apache.xml.internal.security.utils.Base64;
[javac] ^
[javac] .../ChangePassWordTool.java:39: cannot find symbol
[javac] symbol : variable Base64
[javac] location: class com.xxx.ChangePassWordTool
[javac] passWord = Base64.encode(passWord.getBytes());
[javac] ^
[javac] 2 errors
由于在eclipse中使用ant插件编译打包该项目没有问题,纳闷为啥出现该异常。
首先定位该类:com.sun.org.apache.xml.internal.security.utils.Base64,发现是在jre/rt.jar中,因此第一步怀疑是ant的配置文件有问题,将build.xml中的文件调整如下:
但是调整之后,编译打包还是报上述错误, 后查询资料发现, 是由于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
在配置文件中即为:
编译成功
- Ant自动编译Java project时无法找到rt.jar的处理方法
- Ant自动编译Java project时无法找到rt.jar的处理方法
- Ant自动编译Java project时无法找到rt.jar的处理方法
- ant调用外部ant,并变编译项目,无法找到rt.jar的处理方法
- Ant找不到rt.jar
- 关于使用gradle构建的java项目中使用到rt.jar不能编译通过的处理
- Eclipse无法编译rt.jar中的某些包解决办法
- Eclipse无法编译rt.jar中的某些包解决办法
- eclipse无法编译rt.jar某些类问题
- eclipse无法自动编译Java文件的方法大全。
- java中rt.jar包的含义
- 关于java无法加载到rt.jar文件
- Maven 编译使用 rt.jar
- Ant编译Java项目成jar
- Eclipse 发布 web project 时 jar 无法发布的问题
- ANT编译Project
- 无法运行ant构建出来的jar
- Qt交叉编译时ICPC命令未找到处理方法
- 一起学Netty(二十)netty的比较规范的C/S端的写法
- 第一个JNI例子
- 编写类似strcmp() strncmp()函数
- Hive ORC数据格式的MapReduce读写
- 微服务应用-基于Spring Cloud和Docker构建电影推荐微服务
- Ant自动编译Java project时无法找到rt.jar的处理方法
- 显示Intent和隐式Intent的使用(意图)
- 虚拟机打包重新部署全过程详细说明
- mysql存储过程初级
- 热度TopN排名算法的设计
- JSP中<base href="<%=basePath%>">作用
- gitconfig中磨刀不误砍柴工的小配置
- libqr--简单好用的c++二维码生成库
- C语言实现md5函数代码