2009-10-23 5 views
10

मैं जब मैं bin/cassandra चलाने कैसेंड्रा ओएस एक्स पर काम करने की कोशिश कर रहा हूँ, मैं निम्नलिखित त्रुटि मिलती है:जावा त्रुटि: .class फ़ाइल त्रुटि में बुरा संस्करण संख्या जब ओएस एक्स पर कैसेंड्रा भागने की कोशिश कर

~/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) 

जो मैं खोज कर निर्धारित कर सकता हूं, यह त्रुटि जावा के असंगत संस्करणों से संबंधित है। मैं गलत क्या कर रही हूं पर

~/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 

कोई भी विचार: हालांकि, जहाँ तक मैं बता सकता हूँ, मैं जावा का नवीनतम संस्करण है?

+1

पता लगाने wheress कैसेंड्रा वर्ग फ़ाइलों, स्वच्छ यह और निर्माण करते हैं, यह होना चाहिए भंडारण है जाएगा समस्या आईएमओ हल करें – Narayan

उत्तर

17

खराब संस्करण संख्या लगभग हमेशा है क्योंकि आपने अपनी जावा फ़ाइल को एक संस्करण के साथ एक क्लास फ़ाइल में संकलित किया है और इसे पहले के संस्करण के साथ चलाने की कोशिश कर रहे हैं।

आपको यह सुनिश्चित करने की ज़रूरत है कि यह "कैसंद्रा" जावा संस्करण का उपयोग कर रहा है जो आपको लगता है। कमांड प्रॉम्प्ट से जावा चलाते समय आपको वही उपयोग करना जरूरी नहीं है।

2

कैसेंड्रा में/फ़ाइल में बिन cassandra.in.sh निम्नलिखित 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/कैसेंड्रा चलाने के लिए प्राप्त करने के लिए पर्याप्त होगा। इस के साथ काम करने के लिए अन्य खोल स्क्रिप्ट प्राप्त करने के लिए आपको पैच 5 9 0 की आवश्यकता हो सकती है और अन्य शैल स्क्रिप्ट को JAVA_HOME और JAVA चर का उपयोग करने के लिए ठीक कर सकते हैं।

3

आप pom.xml में डाल Maven का उपयोग कर, तो इस तरह से यह 1.5 से संकलन भले ही यू का उपयोग 1,6

<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> 
संबंधित मुद्दे