【发布时间】:2011-12-11 14:57:47
【问题描述】:
我有一个 Java 应用程序,我想为用户提供编译 Java 源代码的能力(使用 JavaCompiler 接口)
如果用户在 JRE 上运行应用程序,我的应用程序应该告诉用户没有可用的 JavaCompiler 实例。
那么如何在java程序中检测JDK或JRE呢?
【问题讨论】:
标签: java eclipse eclipse-plugin eclipse-rcp eclipse-jdt
我有一个 Java 应用程序,我想为用户提供编译 Java 源代码的能力(使用 JavaCompiler 接口)
如果用户在 JRE 上运行应用程序,我的应用程序应该告诉用户没有可用的 JavaCompiler 实例。
那么如何在java程序中检测JDK或JRE呢?
【问题讨论】:
标签: java eclipse eclipse-plugin eclipse-rcp eclipse-jdt
看看 stackoverflow 线程 - How to determine if the Java VM is installed on Windows? 、 How do I detect which kind of JRE is installed — 32bit vs. 64bit 和 How can I detect the installed Sun JRE on Windows?
您可以使用System.getProperties()/System.getProperty() 方法。
【讨论】:
您可以向ToolProvider 请求实现JavaCompiler。如果它返回null,则没有JavaCompiler 的实现可用:
JavaCompiler c = ToolProvider.getSystemJavaCompiler();
if (c == null) {
// JRE
}
【讨论】:
JavaCompiler 接口本身始终可用,但 JDK 与 JRE 的区别取决于是否有实现。
javac。但是如果我想允许用户运行它,即使无法访问javac 怎么办?我只想知道我是在 JDK 还是 JRE 上运行...参见this link - 如果用户定义了环境变量,它就可以解决。但由于我不需要javac,我不想用这个额外的配置开销来打扰用户......