web-dev-qa-db-ja.com

OpenShiftのDIYカートリッジでのJDK8のサポート

私は知っています WildFlyカートリッジはJDKをサポートしていません 、しかしどういうわけかJava 8を実験的なDIYカートリッジにインストールできますか?Java-1.7.0はで入手可能な最新バージョンです/ usr/lib。

19
juanignaciosl

Java8がデフォルトでDIYで利用できるようになりました。 /。openshift/action_hooks/start.shで以下のようにPATHを設定する必要があります

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

更新:OpenShiftに代替ランタイムが追加されました。独自のランタイムのダウンロードをスキップできます。

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

こんにちは、Vert.xアプリケーションのJDKを更新する必要があったので、上記の回答を更新したいと思います。完全にJava8で記述されているため(Vert.xコードの方がはるかに見栄えがします)、juanが報告した問題に遭遇するまで、Openshiftで少し実験を始めました。

ただし、いくつか修正して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

DIYカートリッジでMavenを使用している場合、これは機能しません。

ボックスの「/ usr/bin/mvn」にある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 "$@"

[〜#〜] update [〜#〜]

少し頭を悩ませた後、DIYカートリッジでMavenを使用してJava8アプリケーションを実行する方法をようやく理解することができました。 usr/binのmvn実行可能ファイルは良くないことがわかっているので、自分でダウンロードするだけです。 Java_HOMEを尊重する独自のバージョンのMavenができたら、準備は完了です。これが私の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 &

これが私と同じくらい多くの時間をこれに費やした他の誰かに役立つことを願っています:)

3
James Owen

デフォルトのwildfly8(8.2.1)カートリッジは、すぐに使用できるJDK8をサポートするようになりました。

0
Julien Kronegg