启动Cassandra 2.0.6时UnsupportedClassVersionError

时间:2014-04-09 14:17:59

标签: java cassandra

我完全清楚这个问题已经在这个帖子中以某种方式提出过:

Cassandra:UnsupportedClassVersionError

然而,我接受的答案,并没有解决我的问题,因为我有一个当前版本的Java,如下所述:

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

java版" 1.7.0_45"   Java(TM)SE运行时环境(版本1.7.0_45-b18)   Java HotSpot(TM)客户端VM(构建24.45-b08,混合模式,共享)

知道这一点,我在启动Cassandra时仍然收到错误:

  

D:\ Development \ Cassandra \ apache-cassandra-2.0.6> bin \ cassandra -f   启动Cassandra Server   线程" main"中的例外情况java.lang.UnsupportedClassVersionError:org / apache / cassandra / service / CassandraDaemon:不支持的major.minor版本51.0           at java.lang.ClassLoader.defineClass1(Native Method)           在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)           在java.net.URLClassLoader $ 1.run(URLClassLoader.java:197)           at java.security.AccessController.doPrivileged(Native Method)           在java.net.URLClassLoader.findClass(URLClassLoader.java:190)           at java.lang.ClassLoader.loadClass(ClassLoader.java:306)           在sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)           at java.lang.ClassLoader.loadClass(ClassLoader.java:247)   找不到主类:org.apache.cassandra.service.CassandraDaemon。程序将退出。

我使用命令提示符(而非Cygwin)在Windows XP计算机上运行以启动Cassandra,并且我能够毫无问题地启动旧版本的Cassandra(apache-cassandra-1.1.4) 。我是否对Cassandra的更高版本做了一些不正确的事情,或者我在配置中某处错过了一些非常明显的东西?

2 个答案:

答案 0 :(得分:0)

该异常的唯一合理解释是Java 6(或更早版本)JVM用于运行为Java 7目标平台编译的代码。

这与你认为发生的事情相矛盾。然而,这是唯一合理的解释。

我建议您复制cassandra包装器脚本(在同一目录中),并将其破解为:

  1. 在开始时添加set -x以查看脚本实际运行的命令。

  2. 添加echo $PATHecho $JAVA_HOME等等,以查看脚本环境中的关键环境变量。

  3. 使用与用于运行JVM for real的完全相同的命令路径添加一行来运行java -version

  4. 这应该揭示你对发生的事情的哪些信念/假设是不正确的。

答案 1 :(得分:0)

我尝试卸载java 1.7并安装最新的java 8解决了我的问题。