Cloud Foundry中的JDK可用性 [英] JDK availability in Cloud Foundry

查看:87
本文介绍了Cloud Foundry中的JDK可用性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从Cloud Foundry Java应用程序内调用javac,以在应用程序运行时编译Java文件。我有一个关于正在使用哪个JDK的问题。

I am trying to call javac from within a Cloud Foundry Java app to compile a java file during runtime of the app. I have a question about which JDK is being used.

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

To test this, in my app, I instantiated a JavaCompiler using statement ToolProvider.getSystemJavaCompiler() and print out the compiler instance. The app was deployed on CF and printed out: 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 -----> 1.8.0_121: //java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_121.tar.gz rel = nofollow noreferrer> https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64 /openjdk-1.8.0_121.tar.gz (0.5s)
2017-04-24T13:23:22.48-0700 [STG / 0] OUT将Open Jdk JRE扩展到.java-buildpack / open_jdk_jre (1.0s)

-----> Java Buildpack Version: v3.13 | https://github.com/cloudfoundry/java-buildpack.git#03b493f 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) 2017-04-24T13:23:22.48-0700 [STG/0] OUT Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.0s)

两个问题:


  1. 假设JDK始终在Cloud Foundry上可用,因此我可以使用javac。

  2. 为什么在我的代码中实例化的编译器引用Sun的javac?我期待的是OpenJDK JDK(即使日志显示仅下载了JRE)。

任何见解都会受到赞赏。谢谢。
-Michelle

Any insight will be appreciated. Thanks. -Michelle

推荐答案


可以安全地假定JDK在云上始终可用铸造,所以我可以使用javac。

Is it safe to assume a JDK is always available on Cloud Foundry, so I can use javac.

未安装 javac 实用程序通过构建包。如果仔细查看它所安装的内容,将会发现它正在安装的是JRE,而不是JDK。 JRE只是运行时,不包含 javac

The javac utility is not installed by the build pack. If you look closely at what it is installing, you'll see that it's installing a JRE and not a JDK. The JRE is just the runtime and does not contain javac.


2017-04 -24T13:23:21.38-0700 [STG / 0] OUT ----->从 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是类型。

Note how it says "Open JDK JRE". "Open JDK" is the name of the Java implementation and "JRE" is the type.

您可以通过运行 cf ssh 放入使用Java构建包部署的应用中。如果查看 /home/vcap/app/.java-buildpack / ,您会看到所有安装的东西。

You can confirm by running cf ssh into an app deployed with the Java build pack. If you look at /home/vcap/app/.java-buildpack/, you can see what all is installed.

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

This is all that I see under the bin directory.

~/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)。

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来自太阳,所以仍然有一些共同的遗产。

I suspect that it's because OpenJDK came out of Sun, so there is still some shared heritage.

https://zh.wikipedia.org/wiki/OpenJDK#历史记录

这篇关于Cloud Foundry中的JDK可用性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆