CloudFoundry и JDK

Sep 17 2020

Я борюсь с развертыванием весеннего приложения, которому необходимо компилировать Java-код во время выполнения. Мое приложение вызывает команду javac, когда пользователь отправляет решение проблемы, поэтому позже оно может запустить java.

Я развертываюсь в облачном цехе и использую java-buildpack, но, к сожалению, он не поставляется с JDK, доступен только JRE, и для этой вещи нет доступных команд javac или java.

Вы, ребята, знаете, как добавить JDK в облачное хранилище без необходимости писать собственный пакет сборки.

благодаря

Ответы

1 DanielMikusa Sep 18 2020 at 01:17

Я бы посоветовал вам использовать поддержку нескольких пакетов сборки и использовать apt-buildpack для установки JDK. Он должен нормально работать вместе с JBP. Просто он должен быть первым в списке.

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

Пример:

  1. Создайте apt.yml.

     ---
     packages:
     - openjdk-11-jdk-headless
    
  2. Bundle , что в ваш 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или обновите путь.