'An SPI class of type org.apache.lucene.codecs.Codec with name 'Lucene54' does not exist
With lucene-core-5.5.2 i am facing problem a in weblogic server. standalone search application works but when i deploy as WEB APP it is failing with below error
Exception type is 'java.lang.ExceptionInInitializerError'. Runtime error: java.lang.IllegalArgumentException: An SPI class of type org.apache.lucene.codecs.Codec with name 'Lucene54' does not exist. You need to add the corresponding JAR file supporting this SPI to your classpath. The current classpath supports the following names: []
I tried creating folder structure under classes/
as META-INF/services/
added all files from lucene-core-5.5.2.jar META-INF\services\
directory also created jar file for META-INF\services\
and added in classpath but it doesn't recognize META-INF/services
to load SPI
Any help would be really appreciated.
Solution 1:[1]
Please add following file in
Folder : META-INF/services/
File :org.apache.lucene.codecs.Codec
Text :org.apache.lucene.codecs.lucene54.Lucene54Codec
Please review the solution with detailed description at https://anwaarlabs.wordpress.com/2017/02/25/lucene-an-spi-class-of-type-org-apache-lucene-codecs-codec-with-name-does-not-exist/
Solution 2:[2]
I got this building with gradle using a proposed solution to build a "fat jar" (executable jar containing all dependent jars) here.
But it didn't work: I got this obscure error to do with Lucene, but not when testing or building or running normally, only when building a fat jar.
My solution was to use shadow jar: code from gradle.build:
buildscript {
repositories { jcenter() }
dependencies { // fatjar
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4' }
}
apply plugin: 'com.github.johnrengelman.shadow'
shadowJar {
baseName = project.name
classifier = null
version = project.version
}
Solution 3:[3]
I added the below code into configuration tags
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/services/org.apache.lucene.codecs.Codec</resource>
<resource>META-INF/services/org.apache.lucene.codecs.PostingsFormat</resource>
</transformer>
</transformers>
And also I add lucene-core dependency at the top of the dependencies tag
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>5.5.0</version>
</dependency>
Solution 4:[4]
its is fixed i added lucene jars in weblogic app server classpath and it is working as expected. i dont know why it is not detecting from my applications lib folder as its also on class path but looks like somehow SPI needs jars and META-INF on app servers classpath
Solution 5:[5]
Make sure that the lucene jar that you have included in your project is of the same version as that of lucene codec mentioned in error. E.g. if the error states LuceneCodec62 then you should have lucene-6.x.x jar included in your project.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Digital Alchemist |
Solution 2 | mike rodent |
Solution 3 | Coderino Javarino |
Solution 4 | Amol |
Solution 5 | arj |