我有一个Java应用程序,希望提供用户能力来编译Java源代码(使用JavaCompiler接口)。
如果用户在JRE上运行应用程序,则我的应用程序应提示用户没有可用的JavaCompiler实例。
那么如何在Java程序中检测JDK或JRE呢?
我有一个Java应用程序,希望提供用户能力来编译Java源代码(使用JavaCompiler接口)。
如果用户在JRE上运行应用程序,则我的应用程序应提示用户没有可用的JavaCompiler实例。
那么如何在Java程序中检测JDK或JRE呢?
您可以从ToolProvider
请求JavaCompiler
的实现。如果返回null
,则没有可用的JavaCompiler
实现:
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
if (c == null) {
// JRE
}
看一下stackoverflow的帖子 - 如何确定Windows上是否安装了Java VM?,如何检测已安装的JRE类型 - 32位还是64位和如何在Windows上检测已安装的Sun JRE?
您可以使用System.getProperties()/System.getProperty()
方法。
JavaCompiler
接口本身总是可用的,但 JDK vs. JRE 的区别取决于是否有实现。 - David Zjavac
可以在类路径中找到时,它的工作非常出色。但是如果我想允许用户运行它,即使无法访问javac
怎么办?我只想知道我是否在JDK或JRE上运行...请参见此链接 - 如果用户定义环境变量,则可以解决此问题。但由于我不需要javac
,所以我不想为用户增加额外的配置负担... - gilad hoch