创建具有所有依赖项的jar时,Java编译器为null

时间:2014-06-03 12:11:08

标签: java maven groovy gradle

我正在尝试创建一个包含所有依赖项的jar,它将托管一个使用Java编译器API在运行时生成类的小型Groovy程序。我使用Gradle One Jar来制作它,但是我也尝试了Maven程序集插件并取得了相同的结果。这是代码失败的代码:

def compiler = ToolProvider.getSystemJavaCompiler()
assert compiler != null

在我的jar文件上运行java -jar时的结果:

Exception in thread "main" Assertion failed:

assert compiler != null
       |        |
       null     false

我猜这可能是一个明显的问题,排除了包含编译器的相应JDK jar。关于如何解决这个问题的任何建议?我不需要Gradle或Maven特定的建议,认为这会有所帮助。

1 个答案:

答案 0 :(得分:0)

我认为Peter试图暗示的是你最有可能使用JRE运行你的java命令,它不包括编译器的tools.jar。你需要tools.jar或。更好的是,安装了JDK。

如果您想知道如何将类或jar添加到清单文件的类路径部分,您可以阅读http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html