CloudFoundry和JDK

问题描述

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

我正在部署到Cloud Foundry并使用java-buildpack,但是不幸的是,它不随JDK一起提供,只有JRE可用,而且该东西没有javac或java命令。

你们知道如何在无需编写自己的自定义buildpack的情况下将JDK添加到Cloud Foundry中的方法

谢谢

解决方法

我建议您使用多构建包支持,并使用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或更新路径。