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

创建具有所有依赖项的jar时,Java编译器为null,java,maven,groovy,gradle,Java,Maven,Groovy,Gradle,我试图创建一个包含所有依赖项的jar,它将承载一个小型Groovy程序,该程序使用Java编译器API在运行时生成一个类。我使用GradleOne Jar来制作这个,但是我也尝试了Maven汇编插件,并获得了相同的结果。以下是失败的代码: def compiler = ToolProvider.getSystemJavaCompiler() assert compiler != null 在我的jar文件上运行java-jar时的结果: Exception in thread "main" A

我试图创建一个包含所有依赖项的jar,它将承载一个小型Groovy程序,该程序使用Java编译器API在运行时生成一个类。我使用GradleOne 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的建议,我认为这会有所帮助。

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


如果您想知道如何将类或JAR添加到清单文件的类路径部分,您可以阅读

您是否尝试过使用
JDK
java
命令执行应用程序?