动态编译Java代码遇到的问题

SymmetricDS项目中有Extension的概念,Extension可以是Java代码,并被当作配置信息一样插入到数据库中,在运行时将Extension代码从数据库读取出来进行编译运行。之前在Linux系统上添加Extension,安装JDK后编译蛮顺利,现在需要在Windows客户端添加Extension,相应的Extension代码将在Windows系统上被编译。查看SymmetricDS的Web控制台日志,发现有“Missing Java compiler, the JDK is required for compiling……”。看这意思就是找不到Java编译器。由于对Java开发不太熟,刚开始我只是简单的把javac.exe所在的目录添加到Path环境变量,再按网上说的添加到JAVA_HOME变量和classpath变量,结果还是一样的错误信息。

找来找去,这两篇文章给了我有用的信息:

How_to_compile_Java_source_code_and_run_it_dynamically

ToolProvider.getSystemJavaCompiler() Return NULL!

只需要将JDK的lib目录下的tools.jar文件拷贝到JRE的lib目录下,问题便得到解决。

发表评论

电子邮件地址不会被公开。