2016-05-26 14 views
0

Мой код:В моей программе Java есть java.lang.UnsupportedClassVersionError. Как мне исправить?

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(); 

    } 
} 

И ошибка, когда я бегу это:

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) 

Кто-нибудь знает, что мне нужно сделать, чтобы исправить это?

+0

«Когда JVM пытается загрузить класс и обнаружил, что версия файла класса не поддерживается, он выдает UnSupportedClassVersionError, и обычно это происходит, если для компиляции исходного файла используется более высокая версия JDK, а более низкая версия JDK используется для запуска программы «. –

+3

Постарайтесь взглянуть на это сообщение http://stackoverflow.com/questions/10382929/how-to-fix-java-lang-unsupportedclassversionerror-unsupported-major-minor-versi – TheLearner

ответ

0

Вы используете новую JVM.

Новые JVM могут поддерживать загрузку (наиболее) старых версий. Старые JVM не могут загружать версии классов, которые не существовали при создании JVM.

Из версии класса (52) вы пытаетесь запустить код, который был выполнен в среде Java 8 на JVM, Java 7 или ниже.

0

«Когда JVM пытается загрузить класс и обнаружил, что файл класса версия не поддерживается она бросает UnSupportedClassVersionError и обычно происходит при более поздней версии JDK используется для компиляции исходного файла и низшая версии JDK используется для запуска программы ».

Удостоверьтесь, что вы компилируете свой код с той же (или второстепенной) версией Java для его запуска.

Вы пытаетесь запустить скомпилированный код Java 8 (например) на Java 6 (например) JVM.

Смежные вопросы