【问题标题】:CloudFoundry and JDKCloudFoundry 和 JDK
【发布时间】:2020-09-16 20:20:30
【问题描述】:

我正在努力部署一个需要在运行时编译 java 代码的 spring 应用程序。当用户提交问题的解决方案时,我的应用程序会调用 javac 命令,以便稍后运行 java

我正在部署到 Cloud Foundry 并使用 java-buildpack,但不幸的是,它没有附带 JDK,只有 JRE 可用,而且没有可用的 javac 或 java 命令。

你们知道如何将 JDK 添加到 Cloud Foundry,而无需编写我自己的自定义 buildpack。

谢谢

【问题讨论】:

  • that thing has no javac or java commands available -> JRE 不会有javac,但会有java。 JBP 并没有将 Java 放在路径上,因此您需要正确设置 PATH 或使用 JRE 二进制文件的完整路径。它将在~/.java-buildpack/open_jdk_jre 之下。

标签: java spring deployment cloud-foundry


【解决方案1】:

我建议您使用多构建包支持并使用 apt-buildpack 安装 JDK。它应该与 JBP 一起正常工作。它只需要在列表中排在第一位即可。

https://github.com/cloudfoundry/apt-buildpack

例子:

  1. 创建一个 apt.yml。

     ---
     packages:
     - openjdk-11-jdk-headless
    
  2. 将其捆绑到您的 JAR 中,jar uf path/to/your/file.jar apt.yml。它应该被添加到 JAR 的根目录中,因此如果您使用 jar tf path/to/your/file.jar,您应该只会看到 apt.yml 而没有任何前缀。

  3. 更新您的 manifest.yml。在列表中首先添加 apt-buildpack。

     ---
     applications:
     - name: spring-music
       memory: 1G
       path: build/libs/spring-music-1.0.jar
       buildpacks:
       - https://github.com/cloudfoundry/apt-buildpack#v0.2.2
       - java_buildpack
    
  4. 然后cf push。您应该看到 apt-buildpack 运行并安装了 JDK。然后它将安装在~/deps/0/lib/jvm/java-11-openjdk-amd64 下。它似乎也不会出现在 PATH 上,因此请使用 javac 的完整路径或更新路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    相关资源
    最近更新 更多