Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CloudFoundry中的JDK可用性_Java_Cloud_Javac_Cloud Foundry_Openjdk - Fatal编程技术网

Java CloudFoundry中的JDK可用性

Java CloudFoundry中的JDK可用性,java,cloud,javac,cloud-foundry,openjdk,Java,Cloud,Javac,Cloud Foundry,Openjdk,我试图在CloudFoundry Java应用程序中调用javac,以便在应用程序运行时编译Java文件。我有一个关于使用哪个JDK的问题 为了测试这一点,在我的应用程序中,我使用语句ToolProvider.getSystemJavaCompiler()实例化了一个Java编译器,并打印出编译器实例。该应用程序部署在CF上并打印出来:com.sun.tools.javac.api。JavacTool@2e68d3ad 下面是日志 ----->Java构建包版本:v3.13| 2017-04-2

我试图在CloudFoundry Java应用程序中调用javac,以便在应用程序运行时编译Java文件。我有一个关于使用哪个JDK的问题

为了测试这一点,在我的应用程序中,我使用语句ToolProvider.getSystemJavaCompiler()实例化了一个Java编译器,并打印出编译器实例。该应用程序部署在CF上并打印出来:com.sun.tools.javac.api。JavacTool@2e68d3ad

下面是日志

----->Java构建包版本:v3.13| 2017-04-24T13:23:21.38-0700[STG/0]OUT----->从(0.5s)下载开放Jdk JRE1.8.0121 2017-04-24T13:23:22.48-0700[STG/0]将开放Jdk JRE扩展到.java buildpack/Open_Jdk_JRE(1.0s)

两个问题:

  • 假设JDK在cloudfoundry上总是可用的,这样我就可以使用javac了
  • 为什么我的代码中实例化的编译器引用Sun的javac?我期待的是OpenJDK JDK(尽管日志上说只有JRE被下载)
  • 如有任何见解,将不胜感激。谢谢 -米歇尔

    假设JDK在cloudfoundry上总是可用的,这样我就可以使用javac了

    生成包未安装
    javac
    实用程序。如果您仔细观察它安装的是什么,您会发现它安装的是JRE而不是JDK。JRE只是运行时,不包含
    javac

    2017-04-24T13:23:21.38-0700[STG/0]OUT----->从(0.5s)下载开放Jdk JRE 1.8.0121

    注意它是如何说“openjdkjre”的。“openjdk”是Java实现的名称,“JRE”是类型

    您可以通过在使用Java构建包部署的应用程序中运行
    cf ssh
    进行确认。如果查看
    /home/vcap/app/.java buildpack/
    ,您可以看到安装了什么

    这是我在
    bin
    目录下看到的所有内容

    ~/app/.java-buildpack/open_jdk_jre$ ls bin/
    java                                            jcmd  jmap    keytool      orbd     policytool  rmiregistry  tnameserv
    java-buildpack-memory-calculator-2.0.2_RELEASE  jjs   jstack  killjava.sh  pack200  rmid        servertool   unpack200
    
    为什么我的代码中实例化的编译器引用Sun的javac?我期待的是OpenJDK JDK(尽管日志上说只有JRE被下载)

    我怀疑这是因为OpenJDK来自Sun,所以仍然有一些共同的传统


    可以确认:OpenJDK由Sun领导,现在由Oracle领导。有关证明,请查看任何OpenJDK源文件中的版权:。它包含各种
    *.oracle.*
    包以及
    *.sun.*
    包。要验证它是否是OpenJDK,请查看
    java-version
    的输出。删除我之前的评论并在此处展开@whjte的问题->