[英]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 -----> 從https下載 Open Jdk JRE 1.8.0_121 : //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)
兩個問題:
任何見解將不勝感激。 謝謝。 -米歇爾
假設 JDK 在 Cloud Foundry 上始終可用是否安全,因此我可以使用 javac。
構建包未安裝javac
實用程序。 如果您仔細查看它正在安裝的內容,您會發現它正在安裝 JRE 而不是 JDK。 JRE 只是運行時,不包含javac
。
2017-04-24T13:23:21.38-0700 [STG/0] OUT -----> 從https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk下載 Open Jdk JRE 1.8.0_121 -1.8.0_121.tar.gz (0.5s)
請注意它是如何說“打開 JDK JRE”的。 “Open JDK”是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,所以仍然有一些共同的遺產。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.