簡體   English   中英

Cloud Foundry 中的 JDK 可用性

[英]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)

兩個問題:

  1. 假設 JDK 在 Cloud Foundry 上始終可用是否安全,因此我可以使用 javac。
  2. 為什么在我的代碼中實例化的編譯器是指 Sun 的 javac? 我期待 OpenJDK JDK(即使日志說只下載了 JRE)。

任何見解將不勝感激。 謝謝。 -米歇爾

假設 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,所以仍然有一些共同的遺產。

https://en.wikipedia.org/wiki/OpenJDK#History

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM