Java运行时查明JDK功能是否可用

时间:2013-07-02 15:29:38

标签: runtime java

是否存在系统调用这样的事情,告诉您是否在“裸”JRE而不是JDK打包的情况下运行? (没有ClassNotFound例外)。

确实是基本问题,但Google / SO中没有任何问题。

3 个答案:

答案 0 :(得分:2)

您可以使用以下技巧来确定JDK的存在:

如果javax.tools.ToolProvider.getSystemJavaCompiler()的返回值为null
然后,没有可用的编译器,您的编译器将在“裸” JRE之上运行。
否则,返回值为JavaCompiler

这几乎可以在所有情况下使用,除非出于某些原因您手动包括了此JDK jar,而不是将其作为完整JDK的一部分(在这种情况下,它不会返回null)。

答案 1 :(得分:1)

显然JRE(Java运行时环境)是Java的运行时环境。

<强> JRE

  

Java运行时环境(JRE)包含JVM,库和其他   支持文件。它不包含任何开发工具,如   编译器,调试器等。实际上,JVM运行程序,它使用   JRE中提供的类库和其他支持文件。如果   你想运行任何java程序,你需要安装JRE   系统。

<强> JDK

  

Java Developer Kit(JDK)包含开发Java程序所需的工具,以及   JRE运行程序。这些工具包括编译器(javac.exe),   Java应用程序启动器(java.exe,jawaw.exe),Appletviewer等

只有在想编写程序并编译程序时才需要JDK。对于运行java程序,JRE就足够了。

答案 2 :(得分:0)

一切都在JRE上运行,JDK指的是允许java开发的工具集,如javac编译器,或者visualvm aplication,用于查看有关运行vms的信息。没有像在JDK上运行这样的东西

如果你需要动态编译,你可以启动另一个调用javac的进程。或者你使用eclipse编译器为java,它是一个编译java代码字节码的jar文件。