java.lang.IncompatibleClassChangeError, BM25BooleanQuery - PullRequest
0 голосов
/ 19 апреля 2011
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)

в этой строке:

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

Я использую реализацию поисковой системы BM25 Okapi: http://nlp.uned.es/~jperezi/Lucene-BM25

Можете ли вы помочь мне решить проблему?Я использую Lucene 3.1 Я также попробовал Lucene 2.9.4 без удачи.

спасибо

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Либо вы используете разные сторонние библиотеки для компиляции и выполнения, либо некоторые сторонние библиотеки не совместимы.

Ошибка может произойти, если вы используете одну версию библиотеки для компиляции и другую (с немного другим API) для выполнения. Дважды проверьте все версии вашей библиотеки (они подходят?) И ваши пути к классам.

0 голосов
/ 19 апреля 2011

Я не программист на Java, поэтому примите этот ответ с осторожностью, но вот факты, которые я вижу:

  1. Дата последнего обновления реализации BM25 - январь 2009 г. (или, возможно, декабрь 2009 г.).
  2. Lucene 3.1 был выпущен в марте этого года
  3. IncompatibleClassChangeError указывает на несовместимое изменение в зависимом классе

Так что я думаю, что вам нужно либо использовать ту же версию Lucene, что и реализацию BM25, использованную при сборке, либо пересобрать ее из исходного кода (если это возможно).

Удачи,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...