【发布时间】:2014-07-16 15:44:15
【问题描述】:
我知道WildFly cartridge doesn't have JDK support,但我可以在实验性 DIY 墨盒上安装 Java 8 吗? java-1.7.0 是 /usr/lib 中可用的最新版本。
【问题讨论】:
我知道WildFly cartridge doesn't have JDK support,但我可以在实验性 DIY 墨盒上安装 Java 8 吗? java-1.7.0 是 /usr/lib 中可用的最新版本。
【问题讨论】:
如果你想要一个特定的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
【讨论】:
现在可以通过 DIY 默认使用 Java 8。您只需要在 /.openshift/action_hooks/start.sh
中设置 PATH,如下所示export JAVA_HOME=/etc/alternatives/java_sdk_1.8.0
export PATH=$JAVA_HOME/bin:$PATH
【讨论】:
action_hooks 设置了三个位置,哪一个是正确的? ./app-root/runtime/repo/.openshift/action_hooks./app-deployments/2015-09-23_11-04-35.405/repo/.openshift/action_hooks./jbossews/template/.openshift/action_hooks。请指导
您好,我想更新上面的答案,因为我同样需要为我的 Vert.x 应用程序更新 JDK。由于它完全是用 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 一起使用,这将不起作用。
如果您查看盒子上“/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 "$@"
更新
经过一番摸索后,我终于能够弄清楚如何在 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 &
希望这可以帮助像我一样投入大量时间的其他人:)
【讨论】:
默认的 wildfly 8 (8.2.1) 插件现在支持开箱即用的 JDK8。
【讨论】: