Lucene: не удается найти символ

#java #hibernate #build #constructor #lucene

#java #спящий режим #сборка #конструктор #lucene

Вопрос:

Я использую Lucene 3.4.0, спящий режим (hibernate-all.jar ), ANT и TestNG для запуска некоторого теста… Большинство из них работает прямо сейчас, но с тех пор, как я реализовал свою часть lucene, кажется, ничего не работает, когда я использую ant command… Я здесь немного потерялся.

Потому что все отлично работает локально. Я могу запустить свой тест, скомпилировать и т.д. Как только я пытаюсь выполнить сборку с помощью ant, я получаю эту ошибку «не удается найти символ» для конструктора StandartAnalyzer (версия.) и т.д…

Но, как я уже сказал, все работает в eclipse… Сначала у меня была ошибка «метод не найден», но я исправил ее, потому что hibernate несовместим с последней версией lucene. Поэтому я обновил режим гибернации… но теперь я понимаю это.

Спасибо. Если вам нужна дополнительная информация, пожалуйста, спросите.

     $ ant explode
Buildfile: c:DuplicateBugFinderdbfbuild.xml

init:

groovy.compile:

groovy.copy:

compile:
    [javac] c:DuplicateBugFinderdbfbuild.xml:156: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=l
st; set to false for repeatable builds
    [javac] Compiling 27 source files to c:DuplicateBugFinderdbfexploded-archivesdbf.eardbf_jar
    [javac] c:DuplicateBugFinderdbfsrchotcomrimstsdbfbusinessserviceclassificationLuceneClassificationAlgorithm.java:
6: cannot find symbol
    [javac] symbol  : constructor StandardAnalyzer(org.apache.lucene.util.Version)
    [javac] location: class org.apache.lucene.analysis.standard.StandardAnalyzer
    [javac]     Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_34);
    [javac]                         ^
    [javac] c:DuplicateBugFinderdbfsrchotcomrimstsdbfbusinessserviceclassificationLuceneClassificationAlgorithm.java:
2: cannot find symbol
    [javac] symbol  : constructor QueryParser(org.apache.lucene.util.Version,java.lang.String,org.apache.lucene.analysis.Analyzer

    [javac] location: class org.apache.lucene.queryParser.QueryParser
    [javac]             new QueryParser(Version.LUCENE_34, "title", analyzer)
    [javac]             ^
    [javac] c:DuplicateBugFinderdbfsrchotcomrimstsdbfbusinessserviceclassificationLuceneClassificationAlgorithm.java:
9: cannot find symbol
    [javac] symbol  : constructor IndexSearcher(org.apache.lucene.store.Directory,boolean)
    [javac] location: class org.apache.lucene.search.IndexSearcher
    [javac]       searcher = new IndexSearcher(index, true);
    [javac]                  ^
    [javac] c:DuplicateBugFinderdbfsrchotcomrimstsdbfbusinessserviceclassificationLuceneClassificationAlgorithm.java:
00: cannot find symbol
    [javac] symbol  : method search(org.apache.lucene.search.Query,org.apache.lucene.search.TopScoreDocCollector)
    [javac] location: class org.apache.lucene.search.IndexSearcher
    [javac]       searcher.search(q, collector);
    [javac]               ^
    [javac] 4 errors

BUILD FAILED
c:DuplicateBugFinderdbfbuild.xml:156: Compile failed; see the compiler error output for details.
  

Ответ №1:

Вероятно, это разница в путях к классам, используемых Eclipse и Ant соответственно. Проверьте, какие jar-файлы вы точно используете внутри Eclipse (какие библиотеки добавлены в проект), а затем какие jar-файлы вы используете в своем объявленном Ant classpath при сборке с этим. Также убедитесь, что вы используете один и тот же JDK в Eclipse и Ant. Если какой-либо из двух вариантов отличается, измените Ant, чтобы они были похожи на Eclipse (поскольку это среда, которая работает)

Ответ №2:

Проверьте ant classpath на наличие нескольких версий библиотеки Lucene. Сделайте ant -diagnostics , чтобы проверить среду ant.

Ответ №3:

Хорошо, исправил это. Мне нужно было добавить файл jar в мою библиотеку / тест (я использую seam framework). В eclipse все работало, потому что я указывал на jar в своих конфигурациях запуска для TestNG. Когда я запускал команду «ant test», jar не был найден…

Итак, спасибо всем.

Кроме того, для тех из вас, кто хочет использовать lucene и seam, убедитесь, что у них также нет несовместимости версий. У меня была эта проблема в течение длительного времени. Наконец, я узнал, что мне пришлось использовать более старую версию lucene (2.4.1) для работы с seam 2.2. Я еще не проверял наличие lucene 3.4 и seam 3…