JDK Cloud Foundry 中的可用性
JDK availability in Cloud Foundry
我正在尝试从 Cloud Foundry Java 应用程序中调用 javac 以在应用程序运行期间编译 java 文件。我有一个关于正在使用 JDK 的问题。
为了对此进行测试,在我的应用程序中,我使用语句 ToolProvider.getSystemJavaCompiler() 实例化了一个 JavaCompiler 并打印出编译器实例。应用部署在CF上,打印出来:com.sun.tools.javac.api.JavacTool@2e68d3ad
以下内容来自日志。
-----> Java Buildpack 版本:v3.13 | https://github.com/cloudfoundry/java-buildpack.git#03b493f
2017-04-24T13:23:21.38-0700 [STG/0] OUT -----> 正在下载打开 Jdk JRE 1.8.0_121来自 https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_121.tar.gz(0.5 秒)
2017-04-24T13:23:22.48-0700 [STG/0] OUT 将 Jdk JRE 扩展到 .java-buildpack/open_jdk_jre (1.0s)
两个问题:
- 假设 JDK 在 Cloud Foundry 上始终可用是否安全,因此我可以使用 javac.
- 为什么我代码中实例化的编译器引用了Sun的javac?我期待 OpenJDK JDK(即使日志说只下载了 JRE)。
任何见解将不胜感激。谢谢。
-米歇尔
Is it safe to assume a JDK is always available on Cloud Foundry, so I can use javac.
构建包未安装 javac
实用程序。如果您仔细查看它正在安装的内容,您会发现它正在安装 JRE 而不是 JDK。 JRE 只是运行时,不包含 javac
.
2017-04-24T13:23:21.38-0700 [STG/0] OUT -----> Downloading Open Jdk JRE 1.8.0_121 from https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_121.tar.gz (0.5s)
注意它是怎么说的 "Open JDK JRE"。 "Open JDK" 是 Java 实现的名称,"JRE" 是类型。
您可以通过 运行 cf ssh
确认进入使用 Java 构建包部署的应用程序。如果您查看 /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
Why the compiler instantiated in my code refers to Sun's javac? I was expecting OpenJDK JDK( even though the log said only the JRE is downloaded ).
我怀疑是因为 OpenJDK 出自 Sun,所以还是有一些共同的遗产。
我正在尝试从 Cloud Foundry Java 应用程序中调用 javac 以在应用程序运行期间编译 java 文件。我有一个关于正在使用 JDK 的问题。
为了对此进行测试,在我的应用程序中,我使用语句 ToolProvider.getSystemJavaCompiler() 实例化了一个 JavaCompiler 并打印出编译器实例。应用部署在CF上,打印出来:com.sun.tools.javac.api.JavacTool@2e68d3ad
以下内容来自日志。
-----> Java Buildpack 版本:v3.13 | https://github.com/cloudfoundry/java-buildpack.git#03b493f 2017-04-24T13:23:21.38-0700 [STG/0] OUT -----> 正在下载打开 Jdk JRE 1.8.0_121来自 https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_121.tar.gz(0.5 秒) 2017-04-24T13:23:22.48-0700 [STG/0] OUT 将 Jdk JRE 扩展到 .java-buildpack/open_jdk_jre (1.0s)
两个问题:
- 假设 JDK 在 Cloud Foundry 上始终可用是否安全,因此我可以使用 javac.
- 为什么我代码中实例化的编译器引用了Sun的javac?我期待 OpenJDK JDK(即使日志说只下载了 JRE)。
任何见解将不胜感激。谢谢。 -米歇尔
Is it safe to assume a JDK is always available on Cloud Foundry, so I can use javac.
构建包未安装 javac
实用程序。如果您仔细查看它正在安装的内容,您会发现它正在安装 JRE 而不是 JDK。 JRE 只是运行时,不包含 javac
.
2017-04-24T13:23:21.38-0700 [STG/0] OUT -----> Downloading Open Jdk JRE 1.8.0_121 from https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_121.tar.gz (0.5s)
注意它是怎么说的 "Open JDK JRE"。 "Open JDK" 是 Java 实现的名称,"JRE" 是类型。
您可以通过 运行 cf ssh
确认进入使用 Java 构建包部署的应用程序。如果您查看 /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
Why the compiler instantiated in my code refers to Sun's javac? I was expecting OpenJDK JDK( even though the log said only the JRE is downloaded ).
我怀疑是因为 OpenJDK 出自 Sun,所以还是有一些共同的遗产。