动态编译问题记录
需求: 根据用户行为数据动态生成规则类压进另一个任务jar包中
步骤:
- 字符串拼接java代码
- 将java代码字符串编译成.class文件输出到磁盘
- 将.class文件压进jar包
本地测试无异常,扔到服务器上出错
第二步遇到问题:
- 编译失败,无法找到依赖。
解决方法: 将jar包解压后再执行 - 编译失败,无法找到tools.jar,由于tools.jar是jdk自带的依赖,本地测试时是在idea里添加的, 打包时没打进去
解决方法:
将tools.jar install到maven本地仓库
mvn install:install-file -Dfile=/c/Program\ Files/Java/jdk1.8.0_151/lib/tools.jar -DgroupId=com.sun.tools -DartifactId=tools -Dversion=1.8 -Dpackaging=jar
再通过pom文件引入
<dependency>
<groupId>com.sun.tools</groupId>
<artifactId>tools</artifactId>
<version>1.8</version>
</dependency>