2016-05-26 4 views
0

Mein Code ist:Mein Java-Programm hat java.lang.UnsupportedClassVersionError. Wie repariere ich das?

public class StanfordTagger { 

    public static void main(String[] args)throws IOException, ClassNotFoundException 
    {    
     System.out.println("Starting Stanford Part of Speech Tagger"); 
     //get file name with path from user 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Enter the path and filename to tag: "); 
     String fileName = keyboard.nextLine(); 

     String line = null; 
     // FileReader reads text files in the default encoding. 
     FileReader fileReader = 
      new FileReader(fileName); 

     // Always wrap FileReader in BufferedReader. 
     BufferedReader bufferedReader = 
      new BufferedReader(fileReader); 

     String newFileName = fileName.replace(".txt", "POSTagger.txt"); 
     //create a FileWriter using the new path and file 
     FileWriter fileWriter = new FileWriter(newFileName); 
     // Always wrap FileWriter in BufferedWriter. 
     BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); 


     /* creates a StanfordCoreNLP object, with POS tagging, lemmatization, NER, parsing, and coreference resolution 
     Properties props = new Properties(); 
     props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref"); 
     StanfordCoreNLP pipeline = new StanfordCoreNLP(props);*/ 


     // Initialize the tagger with a model 
     MaxentTagger tagger = new MaxentTagger(
     "G:\\Natural Language Final Project\\taggers\\english-left3words-distsim.tagger"); 

     while((line = bufferedReader.readLine()) != null) { 
      System.out.println(tagger.tagString(line)); 
      bufferedWriter.write(tagger.tagString(line)+"\n"); 
     }  

     // Always close files. 
     bufferedReader.close(); 
     bufferedWriter.flush(); 
     bufferedWriter.close(); 

    } 
} 

Und der Fehler, wenn ich laufen soll:

Enter the path and filename to tag: G:\Natural Language Final Project\tasks_1-20_v1-2\en\qa6_yes-no-questions_test.txt 
Exception in thread "main" java.lang.UnsupportedClassVersionError: edu/stanford/nlp/tagger/maxent/MaxentTagger : Unsupported major.minor version 52.0 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at StanfordTagger.main(StanfordTagger.java:78) 
Java Result: 1 
BUILD SUCCESSFUL (total time: 39 seconds) 

Weiß jemand, was ich dieses Problem beheben tun müssen?

+0

"Wenn JVM versucht, eine Klasse zu laden, und keine Klassendateiversion unterstützt wird, wird UnSupportedClassVersionError ausgegeben. Dies tritt normalerweise auf, wenn eine höhere JDK-Version zum Kompilieren der Quelldatei verwendet wird und eine niedrigere JDK-Version zum Ausführen des Programms verwendet wird . " –

+3

Versuchen Sie, diesen Beitrag http://stackoverflow.com/questions/10382929/how-to-fix-java-lang-unsupportedclassversionerror-unsupported-major-minor-versi zu sehen – TheLearner

Antwort

0

Sie verwenden eine neuere JVM.

Neue JVMs können das Laden (der meisten) älteren Klassenversionen unterstützen. Ältere JVMs können keine Klassenversionen laden, die beim Erstellen der JVM nicht vorhanden waren.

Von der Klassenversion (52) versuchen Sie Code auszuführen, der in einer Java 8-Umgebung auf einer JVM erfüllt wurde, die Java 7 oder niedriger ist.

0

„Wenn versucht JVM eine Klasse zu laden und festgestellt, dass Klassendatei Version nicht unterstützt es wirft UnsupportedClassVersionError und es in der Regel tritt auf, wenn eine höhere JDK-Version verwendet wird, um die Quelldatei und eine niedrigere JDK-Version zu kompilieren wird verwendet, um das Programm auszuführen. "

Sicher, dass Sie Ihren Code mit der gleichen (oder untergeordneten) Java-Version kompilieren, um es auszuführen.

Sie versuchen, einen Java 8 (zum Beispiel) kompilierten Code auf einer Java 6 (zum Beispiel) JVM auszuführen.

Verwandte Themen