Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

Если вам нужна конкретная версия 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

Ответ 3

Привет. Я хочу обновить ответ выше, так как мне нужно было обновить 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

Ответ 4

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

Если вы посмотрите на команду 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]"

UPDATE

После небольшого поцарапания головы я наконец смог разобраться, как запустить приложение 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  "<settings>\n <localRepository>$OPENSHIFT_DATA_DIR</localRepository>\n</settings>\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 &

Надеюсь, это поможет кому угодно, кто заработал столько часов, сколько я сделал:)

Ответ 5

По умолчанию картридж с бабочкой по умолчанию (8,2,1) теперь поддерживает JDK8.