【问题标题】:JDK 8 support at DIY cartridge in OpenShiftOpenShift 中 DIY 盒带的 JDK 8 支持
【发布时间】:2014-07-16 15:44:15
【问题描述】:

我知道WildFly cartridge doesn't have JDK support,但我可以在实验性 DIY 墨盒上安装 Java 8 吗? java-1.7.0 是 /usr/lib 中可用的最新版本。

【问题讨论】:

    标签: openshift java-8


    【解决方案1】:

    如果你想要一个特定的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"
    

    感谢this cartridge

    正如@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 中吗?甚至在重新启动墨盒之后?
    • 我还需要在 .openshift/action_hooks/pre_start_wildfly 中添加“export OPENSHIFT_WILDFLY_JDK8=$OPENSHIFT_DATA_DIR/jdk1.8.0_31/”
    • 查看 sathish 的回答 - DIY 包现在包括 JDK 1.8,只是默认情况下不在路径上。
    【解决方案2】:

    现在可以通过 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。请指导
    • 这对我不起作用。设置这些导出后,我仍然看到我的环境使用 OpenJDK,有什么想法吗?
    【解决方案3】:

    您好,我想更新上面的答案,因为我同样需要为我的 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
    

    【讨论】:

      【解决方案4】:

      如果您将 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 &
      

      希望这可以帮助像我一样投入大量时间的其他人:)

      【讨论】:

        【解决方案5】:

        默认的 wildfly 8 (8.2.1) 插件现在支持开箱即用的 JDK8。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-20
          相关资源
          最近更新 更多