Поддержка JDK 8 на картридже DIY в OpenShift

Я знаю, что картридж WildFly не поддерживает JDK , но могу ли я как-то установить Java 8 на экспериментальном картридже DIY? java-1.7.0 – это последняя версия, доступная в / usr / lib.

Java 8 теперь доступен по умолчанию с помощью DIY. Вам просто нужно установить PATH, как указано ниже, в файле /.openshift/action_hooks/start.sh

export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0 export PATH=$JAVA_HOME/bin:$PATH 

Если вам нужна конкретная версия JDK, вы можете загрузить ее и установить переменные среды:

 cd $OPENSHIFT_DATA_DIR wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u5-b13/jdk-8u5-linux-x64.tar.gz tar -zxf jdk-8u5-linux-x64.tar.gz export PATH=$OPENSHIFT_DATA_DIR/jdk1.8.0_05/bin:$PATH export JAVA_HOME="$OPENSHIFT_DATA_DIR/jdk/jdk1.8.0_05" 

Благодаря этому картриджу .

Как указывает @youssef, вы также должны добавить эти строки в .openshift / action_hooks / start:

 export JAVA_HOME="$OPENSHIFT_DATA_DIR/jdk/jdk1.8.0_05" export PATH=$OPENSHIFT_DATA_DIR/jdk1.8.0_05/bin:$PATH 

UPDATE: теперь OpenShift добавила альтернативные варианты выполнения, вы можете пропустить загрузку самостоятельно:

 export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0 export PATH=$JAVA_HOME/bin:$PATH 

Привет, я хочу обновить ответ выше, так как мне нужно было обновить JDK для моего приложения Vert.x. Поскольку он полностью написан на Java8 (с ним лучше выглядит код Vert.x), я начал немного экспериментировать с Openshift, пока не встретил проблему, о которой сообщал juan.

Однако мне пришлось исправить некоторые вещи и обновить их до JDK1.8u20:

 // connect with SSH to your application, then cd $OPENSHIFT_DATA_DIR wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u20-b26/jdk-8u20-linux-x64.tar.gz tar -zxf jdk-8u20-linux-x64.tar.gz export PATH=$OPENSHIFT_DATA_DIR/jdk1.8.0_20/bin:$PATH export JAVA_HOME=$OPENSHIFT_DATA_DIR/jdk1.8.0_20/ // then depending on your cartridge you need to exec the following command echo $JAVA_HOME > $OPENSHIFT_{cartridge}_DIR/env/JAVA_HOME // in my case was // echo $JAVA_HOME > $OPENSHIFT_VERTX_DIR/env/JAVA_HOME // for Wildfly I presume it is // echo $JAVA_HOME > $OPENSHIFT_WILDFLY_DIR/env/JAVA_HOME 

Это не работает, если вы используете Maven с DIY-Cartridge.

Если вы посмотрите на команду mvn в «/ usr / bin / mvn» на вашем поле, вы увидите, что mvn сбрасывает $ JAVA_HOME при выполнении.

 #!/bin/sh prog=$(basename $0) export JAVA_HOME=/usr/lib/jvm/java export JAVACMD=$JAVA_HOME/bin/java export M2_HOME=/usr/share/java/apache-maven-3.0.4 exec $M2_HOME/bin/$prog "[email protected]" 

ОБНОВИТЬ

После немного царапин на голове я наконец смог разобраться, как запустить приложение java8 с помощью Maven на картридже DIY. Поскольку мы знаем, что исполняемый файл mvn на usr / bin не является хорошим, мы просто загружаем наши собственные. Как только у нас будет собственная версия Maven, которая уважает JAVA_HOME, тогда мы будем рады. Вот мои action_hooks …

pre_start

 #!/bin/bash cd $OPENSHIFT_DATA_DIR #Download Maven If not already installed if [ ! -d apache-maven-3.3.3 ]; then wget http://www.eu.apache.org/dist/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz tar -zxf apache-maven-3.3.3-bin.tar.gz fi #Download Java8 If not already installed if [ ! -d jdk1.8.0_05 ]; then wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u5-b13/jdk-8u5-linux-x64.tar.gz tar -zxf jdk-8u5-linux-x64.tar.gz fi 

Начало

 export PATH=$OPENSHIFT_DATA_DIR/jdk1.8.0_05/bin:$PATH export JAVA_HOME="$OPENSHIFT_DATA_DIR/jdk1.8.0_05" cd $OPENSHIFT_DATA_DIR echo -e "\n $OPENSHIFT_DATA_DIR\n\n" > settings.xml $OPENSHIFT_DATA_DIR/apache-maven-3.3.3/bin/mvn -f $OPENSHIFT_REPO_DIR/pom.xml clean package -s $OPENSHIFT_DATA_DIR/settings.xml nohup java -jar $OPENSHIFT_REPO_DIR/target/**YOUR_FAT_JAR**.jar > $LOG 2>&1 & 

Надеюсь, это поможет кому-то еще, кто потратил столько часов на это, как я. 🙂

Картридж Wildfly 8 (8.2.1) по умолчанию теперь поддерживает JDK8 из коробки.

Interesting Posts

Как разрешить загрузку .json-файла с помощью ASP.NET

JPA – самый быстрый способ игнорировать поле во время сохранения?

Имя пользователя ASP.Net для электронной почты

CustomPage для серийного номера в Inno Setup

В чем разница между выбранными, проверенными и активированными в Android состояниями?

Мои изображения размыты! Почему WPF SnapsToDevicePixels не работает?

Как связать 2 модели с одним полем ввода в Angular?

Отключить звук «разблокировки» в Windows 8

В Windows запуск «import tensorflow» не генерирует модуль с именем «_pywrap_tensorflow»

Ошибка пользовательского исключения веб-службы WCF для клиента

Как добавить элемент контекстного меню в проводник Windows для папок

Захват stdout и stderr в разные переменные

Как делегировать локальное администрирование клиента группе справки (без наличия прав администратора домена)

Формат строкового формата

Не удалось загрузить нить в комплекте на устройстве iPhone

Давайте будем гением компьютера.