2011-04-19 93 views
0
Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
    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) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    at NVoting.<init>(NVoting.java:143) 
    at Main.main(Main.java:8) 

在這條線:java.lang.IncompatibleClassChangeError,BM25BooleanQuery

booleanQuery.add(new BM25BooleanQuery(current_tags[i], 
          "tags", 
          new StandardAnalyzer(org.apache.lucene.util.Version.LUCENE_31)), 
          BooleanClause.Occur.SHOULD); 

我使用的是BM25霍加皮檢索系統的實現:http://nlp.uned.es/~jperezi/Lucene-BM25

你能幫我解決這個問題?我正在使用Lucene 3.1 我也試過Lucene 2.9.4,沒有運氣。

感謝

+0

這可能是有益的http://stackoverflow.com/questions/1980452/what-c​​auses-java-lang-incompatibleclasschangeerror這意味着你要使用它並沒有一起編譯,兩個圖書館和他們之間有一個突破性的變化,即他們不兼容。 – 2011-04-19 12:56:22

回答

0

我不是一個Java程序員,所以採取這個回答謹慎,但這裏的事實,因爲我看到他們:

  1. 的BM25執行的最後更新日期爲2009年2009年1月(或者十二月)
  2. 的Lucene 3.1於今年三月
  3. IncompatibleClassChangeError發佈指示依賴類

所以我認爲你要麼需要使用一個不兼容的改變與構建時使用的BM25實現相同的Lucene版本,或者從源代碼重新構建它(如果這是可能的話)。

祝你好運,

1

無論您使用的編譯和執行或一些第三方庫的不同的第三方庫是不兼容的。

如果您使用一個版本的庫進行編譯,而另一個庫(使用略有不同的API)執行,則可能會發生此錯誤。仔細檢查你的所有圖書館版本(它們是否合適?)和你的類路徑。

相關問題