Linux

Nutch 抱怨 Java 8 版本不匹配但只安裝了 Java 7

  • May 17, 2017

我正在關注來自https://wiki.apache.org/nutch/NutchTutorial的 Nutch 教程

我有來自 Apache 站點的 Solr 5.5.4 和來自 Apache 站點的 Nutch 1.13

我正在使用 Oracle Java 7,我首先嘗試使用 openjdk-7 並得到相同的錯誤(下)

我按照教程進入執行 bin/inject 的步驟,我得到一個異常“不支持的 major.minor 版本 52.0”——我相信它是 Java 8。我的系統上沒有安裝 Java 8,這是一個新的Debian 安裝。(下面的完整錯誤消息)

我該如何解決這個錯誤?

user@Nutch-1:~/apache-nutch-1.13$ bin/nutch inject crawl/crawldb urls
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/nutch/crawl/Injector : Unsupported major.minor version 52.0
       at java.lang.ClassLoader.defineClass1(Native Method)
       at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
       at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
       at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
       at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
       at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
       at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
       at java.security.AccessController.doPrivileged(Native Method)
       at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
       at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
user@Nutch-1:~/apache-nutch-1.13$ java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
user@Nutch-1:~/apache-nutch-1.13$ which java
/usr/bin/java
user@Nutch-1:~/apache-nutch-1.13$ /usr/bin/java -version
java version "1.7.0_80"
user@Nutch-1:~/apache-nutch-1.13$ echo $JAVA_HOME
/usr/lib/jvm/java-7-oracle/jre/
user@Nutch-1:~/apache-nutch-1.13$ cd $JAVA_HOME
user@Nutch-1:/usr/lib/jvm/java-7-oracle/jre$ bin/java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

我通過安裝 Java 8 解決了這個問題。我做了一堆不同的Google搜尋,試圖探勘更多關於 Nutch 和 Java 版本的資訊,我發現了這個https://issues.apache.org/jira/browse/NUTCH-2171(這是一個名為“將 Nutch Trunk 升級到 Java 1.8”的錯誤,在 Nutch 1.3 中標記為“已修復”)

所以我沒有正確閱讀錯誤資訊。似乎是說載入的某些程式碼需要版本 52,我認為這意味著 Java 版本 52 與載入的某些程式碼不兼容。

引用自:https://serverfault.com/questions/850775