java - 是否可以使用 JRE 作为标准 VM 来实例化 Java 编译器?

标签 java java-compiler-api

我正在尝试使用反射动态编译和加载java类。如果我使用 JDK 作为标准 VM,我的代码可以正常工作,没有任何异常。但当我使用 JRE 作为标准 VM 时,相同的代码在 ToolProvider.getSystemJavaCompiler() 处抛出空指针异常。

我的类路径中没有 JDK。那么,我们是否可以选择使用 JRE 作为标准 VM 来编译 java 代码呢?有人可以帮我解决这个问题吗?提前致谢。

最佳答案

java-compiler API 仅在存在编译器时才起作用。当您使用 JDK 时,编译器存在,但当您使用 JRE 时(通常)不存在。

您是否打算使用一种与 JDK 中提供的不同的特殊编译器?看起来有一种方法可以将第三方编译器插入到 JRE 中。

http://docs.oracle.com/javase/7/docs/api/javax/tools/package-summary.html

关于java - 是否可以使用 JRE 作为标准 VM 来实例化 Java 编译器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19082274/

相关文章:

java - Jersey 2 多部分

Java 1.8 : TLSv1. 2 ClientHello 握手失败(缺少椭圆曲线扩展?)

java - 不适用于参数 (void) 错误

java - 使用 JavaCompiler 以编程方式编译 java?

java - 找不到或加载主类 - 在异常情况下

java - 如何以编程方式验证 Java 代码?

java - 编译在另一个 java 代码中的字符串中可用的 java 代码

java - 如何使用 Apache HTTP 客户端获取像 "http://ньюбаланс.рф"这样的西里尔域名?

java - 从 C++ 代码运行可执行 jar

java - 限制Java编译器API