#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…