Java:如何检测当前的Java运行时是JRE还是JDK?

8

我有一个Java应用程序,希望提供用户能力来编译Java源代码(使用JavaCompiler接口)。

如果用户在JRE上运行应用程序,则我的应用程序应提示用户没有可用的JavaCompiler实例。

那么如何在Java程序中检测JDK或JRE呢?

2个回答

11

您可以从ToolProvider请求JavaCompiler的实现。如果返回null,则没有可用的JavaCompiler实现:

JavaCompiler c = ToolProvider.getSystemJavaCompiler();
if (c == null) {
    // JRE
}

我不确定那是否有效 - 看起来 JavaCompiler 接口本身总是可用的,但 JDK vs. JRE 的区别取决于是否有实现。 - David Z
当JDK正确安装并且javac可以在类路径中找到时,它的工作非常出色。但是如果我想允许用户运行它,即使无法访问javac怎么办?我只想知道我是否在JDK或JRE上运行...请参见此链接 - 如果用户定义环境变量,则可以解决此问题。但由于我不需要javac,所以我不想为用户增加额外的配置负担... - gilad hoch
在JDK7x64上无法工作,我们确定这仍然有效吗? - spy

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接