web-dev-qa-db-fra.com

Prise en charge de JDK 8 par une cartouche DIY dans OpenShift

Je sais/ La cartouche WildFly ne prend pas en charge le JDK , mais puis-je installer Java 8 de façon ou d'autre sur une cartouche DIY expérimentale? Java-1.7.0 est la dernière version disponible sur/usr/lib.

19
juanignaciosl

Java 8 est maintenant disponible par défaut avec DIY. Il vous suffit de définir PATH comme indiqué ci-dessous dans votre /.openshift/action_hooks/start.sh

export Java_HOME=/etc/alternatives/Java_sdk_1.8.0
export PATH=$Java_HOME/bin:$PATH

Si vous souhaitez une version spécifique du JDK, vous pouvez la télécharger et définir les variables d’environnement:

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"

Merci à cette cartouche .

Comme @youssef le fait remarquer, vous devriez également ajouter ces lignes à .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 a maintenant ajouté des runtimes alternatifs. Vous pouvez ignorer le téléchargement des vôtres:

export Java_HOME=/etc/alternatives/Java_sdk_1.8.0
export PATH=$Java_HOME/bin:$PATH
29
juanignaciosl

Bonjour, je souhaite mettre à jour la réponse ci-dessus, car j’ai eu le même besoin de mettre à jour le JDK pour mon application Vert.x. Puisqu'il est totalement écrit en Java8 (le code Vert.x lui va beaucoup mieux), j'ai commencé à expérimenter un peu avec Openshift, jusqu'à ce que je rencontre le problème signalé par juan.

Cependant, je devais corriger certaines choses et mettre à jour 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
9
Alexian

Cela ne fonctionne pas si vous utilisez Maven avec la cartouche DIY.

Si vous regardez la commande mvn dans "/ usr/bin/mvn" sur votre boîte de dialogue, vous verrez que mvn réinitialise $ Java_HOME lorsqu'il est exécuté.

#!/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 "$@"

METTRE À JOUR

Après avoir un peu mal à la tête, j'ai enfin pu comprendre comment exécuter une application Java8 en utilisant Maven sur une cartouche DIY. Comme nous savons que l'exécutable mvn sur usr/bin n'est pas bon, nous téléchargeons simplement le nôtre. Une fois que nous avons notre propre version de Maven qui respecte Java_HOME, nous sommes prêts à partir. Voici mes action_hooks ...

pré-départ

#!/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

début

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 &

J'espère que cela aidera tous ceux qui y consacrent autant d'heures que moi :)

3
James Owen

La cartouche wildfly 8 (8.2.1) par défaut prend désormais en charge JDK8 clé en main.

0
Julien Kronegg