我想让Cassandra在OS X上工作。当我运行bin/cassandra
时,我收到以下错误:
~/apache-cassandra-incubating-0.4.1-src > bin/cassandra -f
Listening for transport dt_socket at address: 8888
Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)
通过搜索我可以确定,此错误与Java的不兼容版本有关。但是,据我所知,我有最新版本的Java:
~/apache-cassandra-incubating-0.4.1-src > java -version
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211)
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode)
~/apache-cassandra-incubating-0.4.1-src > javac -version
javac 1.6.0_13
~/Downloads/apache-cassandra-incubating-0.4.1-src > echo $JAVA_HOME
/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
关于我做错的任何想法?
答案 0 :(得分:17)
错误的版本号几乎始终,因为您已将java文件编译为具有一个版本的类文件,并尝试使用早期版本运行它。
您需要确定此“cassandra”正在使用您认为的Java版本。它不一定使用从命令提示符运行java时获得的那个。
答案 1 :(得分:3)
如果你使用maven put in pom.xml,那么这样它即使你使用1.6也会编译1.5
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
<debug>true</debug>
</configuration>
</plugin>
答案 2 :(得分:2)
在文件cassandra.in.sh中的cassandra / bin中,在文件底部添加以下2行:
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
JAVA=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Commands/java
这足以让bin / cassandra运行。让其他shell脚本与此一起使用 您可能需要修补程序590并修复其他shell脚本以使用JAVA_HOME和JAVA变量。