2014-04-09 41 views
0

當我充分認識到這個問題已經被問的方式在這個線程:UnsupportedClassVersionError開始卡桑德拉2.0.6

Cassandra:UnsupportedClassVersionError

然而,得到的答案給出:S /在那裏,我接受,不解決我的問題,因爲我有一個Java當前版本詳情如下:

D:\Development\Cassandra\apache-cassandra-2.0.6>java -version 

java version "1.7.0_45" Java(TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode, sharing)

知道了這一點,我仍然收到錯誤開始時卡桑德拉:

D:\Development\Cassandra\apache-cassandra-2.0.6>bin\cassandra -f Starting Cassandra Server Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/cassandra/service/CassandraDaemon : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) Could not find the main class: org.apache.cassandra.service.CassandraDaemon. Program will exit.

我在使用命令提示符(而不是Cygwin)啓動Cassandra的Windows XP機器上運行,並且我能夠在沒有任何問題的情況下啓動較早版本的Cassandra(apache-cassandra-1.1.4)。我是否在Cassandra的後期版本中做了一些不正確的事情,或者我錯過了配置中某處顯而易見的東西?

+0

你如何開始cassandra?堆棧跟蹤絕對不是由Java 7 vm生成的。 –

+0

我像啓動舊版本時那樣使用bin \ cassandra -f啓動它。 – Azkuma

+0

當PATH指向JDK7時,JAVA_HOME環境變量可能指向JDK6。這將從命令行解釋正確的java版本,並且從cassandra啓動腳本中不正確。 「%JAVA_HOME%\ bin \ java」-version(在Windows上)的輸出是什麼? –

回答

0

僅對對該異常的合理解釋是,正在使用Java 6(或更早版本)的JVM來運行爲Java 7目標平臺編譯的代碼。

這與您認爲會發生的事情相矛盾。儘管如此,這是唯一合理的解釋。

我建議你做cassandra包裝腳本的副本(在同一目錄下),它劈死:

  1. 在開始添加set -x,看看有什麼命令實際上是由於運行腳本。

  2. add echo $PATH,echo $JAVA_HOME等等,以查看腳本環境中的關鍵環境變量。

  3. 使用完全相同的命令路徑添加一行來運行java -version,該命令路徑用於實際運行JVM。

這應該揭示哪些你的信念/正在發生的事情的假設是不正確的。

0

我曾嘗試卸載Java 1.7並安裝最新的Java 8解決了我的問題。