我完全清楚这个问题已经在这个帖子中以某种方式提出过:
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的更高版本做了一些不正确的事情,或者我在配置中某处错过了一些非常明显的东西?
答案 0 :(得分:0)
该异常的唯一合理解释是Java 6(或更早版本)JVM用于运行为Java 7目标平台编译的代码。
这与你认为发生的事情相矛盾。然而,这是唯一合理的解释。
我建议您复制cassandra
包装器脚本(在同一目录中),并将其破解为:
在开始时添加set -x
以查看脚本实际运行的命令。
添加echo $PATH
,echo $JAVA_HOME
等等,以查看脚本环境中的关键环境变量。
使用与用于运行JVM for real的完全相同的命令路径添加一行来运行java -version
。
这应该揭示你对发生的事情的哪些信念/假设是不正确的。
答案 1 :(得分:0)
我尝试卸载java 1.7并安装最新的java 8解决了我的问题。