【问题标题】:PredictionIO start server throws Unsupported class version errors in centos 6PredictionIO 启动服务器在 centos 6 中抛出 Unsupported class version 错误
【发布时间】:2015-09-18 16:24:39
【问题描述】:

我在 RHEL 6.6 中安装了 predictionIO。但是当我使用 pio-start-all 启动 pio 时,我收到如下错误

$ pio-start-all 
Starting Elasticsearch...
Starting HBase...
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/util/HBaseConfTool : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: org.apache.hadoop.hbase.util.HBaseConfTool. Program will exit.
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/zookeeper/ZKServerTool : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: org.apache.hadoop.hbase.zookeeper.ZKServerTool. Program will exit.
starting master, logging to /home/itdevel/PredictionIO/vendors/hbase-1.0.0/bin/../logs/hbase-itdevel-master-Puget-129416.out
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/master/HMaster : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
starting regionserver, logging to /home/itdevel/PredictionIO/vendors/hbase-1.0.0/bin/../logs/hbase-itdevel-1-regionserver-Puget-129416.out
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/regionserver/HRegionServer : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
Waiting 10 seconds for HBase to fully initialize...
Starting PredictionIO Event Server...

pio 服务器毕竟没有启动。我创建了一个新用户并为该用户安装了 java,因为系统范围的 java 安装是 1.6。我已经为新用户成功安装了java 1.8

$java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

我在 pio-start-all 中编辑了路径以指向我的 java 安装,因为 pio-start-all 找不到 jdp。我检查了我的 java 路径。

 $echo $JAVA_HOME
/home/me/jdk1.8.0_45/bin

将 pio-start-all 中的路径从 /home/me/jdk1.8.0_45/bin/bin 更改为 /home/me/jdk1.8.0_45/bin 后,jdp 错误已修复,但我对当前错误感到震惊。我已经在几个 ubuntu 机器和服务器中安装了 pio,定制了 pio 以满足我的自定义引擎模板要求,并且它运行没有问题。 predictionIO 支持 Redhat 吗?希望这是您需要的所有错误跟踪。在此先感谢:)

【问题讨论】:

    标签: java centos6 unsupported-class-version predictionio


    【解决方案1】:

    java.lang.UnsupportedClassVersionError 肯定会在 pio-start-all 或其运行的其他脚本仍然使用 早期版本的 Java 而不是 predictionIO 所需的 Java 时抛出。您必须彻底检查所使用的 Java 版本。

    其中一种方法是在root下尝试:

    alternatives --config java
    

    你会有这样的东西

    There are 2 choices for the alternative java (providing /usr/bin/java).
    
    Selection    Path                                            Priority   Status
    ------------------------------------------------------------
    * 0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      auto mode
      1            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode
      2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1062      manual mode
    
    Press enter to keep the current choice[*], or type selection number:
    

    选择最新的 Java 版本。

    您也可以配置JAVA_HOME。请check the instructions for RedHat

    【讨论】:

    • 但这是系统范围的。就我而言,还有其他人使用同一台服务器,他们使用的是 java 1.6。那么如何让predictioIO 使用java 1.8 而不是alternatives --config java?我认为 java 1.8 已经安装以供新使用,因为java -version 返回java version "1.8.0_45"
    【解决方案2】:

    我已经解决了这个问题。在我的情况下,hbase 指向错误的 java 安装。在/home/me/PredictionIO/vendors/hbase-1.0.0/bin/hbase 中更新JAVA_HOME 后,hbase 已启动并运行,我的问题已修复。感谢您的支持:)

    【讨论】:

      猜你喜欢
      • 2023-01-17
      • 2023-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多