无法弄清楚导致什么原因导致的问题。一个类型为org.apache.lucene.codecs.Codec的SPI类,其名称为' Lucene42'不存在。您需要将支持此SPI的相应JAR文件添加到类路径'
任何帮助将不胜感激
java.lang.IllegalArgumentException: A SPI class of type org.apache.lucene.codecs.Codec with name 'Lucene42' does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath.The current classpath supports the following names: []
org.apache.lucene.util.NamedSPILoader.lookup(NamedSPILoader.java:104)
org.apache.lucene.codecs.Codec.forName(Codec.java:95)
org.apache.lucene.codecs.Codec.<clinit>(Codec.java:122)
org.apache.lucene.index.LiveIndexWriterConfig.<init>(LiveIndexWriterConfig.java:118)
org.apache.lucene.index.IndexWriterConfig.<init>(IndexWriterConfig.java:145)
com.damn.fr.rr.rent.getResukt(Man.java:404)
com.damn.fr.rr.handler.pg.setResult(pg.java:103)
com.damn.fr.rr.cmd.del.execute(del.java:19)
com.damn.fr.rr.servlet.PublicController.doPost(controller.java:199)
javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
Jboss部署文件夹路径&#39; C:\ JBAS \ modules \ org \ apache \ lucene \ main&#39;和目录内容
的JBoss部署-structure.xml
<sub-deployment name="damn.jar">
<dependencies>
<module name="org.apache.commons.fileupload" />
<module name="org.apache.commons.io" />
<module name="org.apache.commons.lang3" />
<module name="org.apache.commons.validator" />
<module name="org.apache.lucene" />
<module name="net.sf.jasperreports" />
<module name="com.google.gson" />
</dependencies>
</sub-deployment>
module.xml
<module xmlns="urn:jboss:module:1.0" name="org.apache.lucene">
<resources>
<resource-root path="lucene-analyzers-common-4.2.0.jar"/>
<resource-root path="lucene-core-4.2.0.jar"/>
<resource-root path="lucene-queryparser-4.2.0.jar"/>
<resource-root path="lucene-codecs-4.2.0.jar"/>
</resources>
<dependencies>
</dependencies>
ant build file segment
<pathelement path="${thirdPartyDir}/lucene-analyzers-common-4.2.0.jar" />
<pathelement path="${thirdPartyDir}/lucene-codecs-4.2.0.jar" />
<pathelement path="${thirdPartyDir}/lucene-queryparser- 4.2.0.jar" />
<pathelement path="${thirdPartyDir}/lucene-core-4.2-SNAPSHOT.jar" />
答案 0 :(得分:2)
请在
中添加以下文件文件夹:META-INF/services/
档案:org.apache.lucene.codecs.Codec
文字:org.apache.lucene.codecs.lucene54.Lucene54Codec
此解决方案是为Lucene5.4定义的,它也适用于Lucene 4.2。感谢
答案 1 :(得分:1)
我发现了一些关于此的事情。希望尽管我使用lucene 4.10.2会有所帮助。
编解码器在'org.apache.lucene.codecs.Codec'中配置。我查看了'lucene-core-4.10.2.jar'并且有一个文件'META-INF \ services \ org.apache.lucene.codecs.Codec'。所以你可以将类名放入配置文件中,lucene会找到它。但是,您不需要解压缩jar文件,添加它并重新打包jar。只需创建一个具有相同目录结构的新文件,即'META-INF \ services \ org.apache.lucene.codecs.Codec'进入java的类路径,例如'target / classes'目录,java将找到所有编解码器配置文件并加载它们。
答案 2 :(得分:0)
有时会在使用lucene版本创建索引时发生,或者您的索引已损坏。尝试删除整个索引并重新编制索引。