java lucene spi

java - No existe una clase SPI del tipo org.apache.lucene.codecs.Codec con el nombre ''Lucene54''



(4)

Agregué el código a continuación en las etiquetas de configuración

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

Y también agrego la dependencia lucene-core en la parte superior de la etiqueta de dependencias

<dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>5.5.0</version> </dependency>

Con lucene-core-5.5.2 estoy enfrentando el problema a en el servidor weblogic. la aplicación de búsqueda independiente funciona, pero cuando la despliego como APLICACIÓN WEB está fallando con el siguiente 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: []

Intenté crear una estructura de carpetas en las classes/ como META-INF/services/ agregué todos los archivos de lucene-core-5.5.2.jar META-INF/services/ directory también creó el archivo jar para META-INF/services/ y se agregó en classpath pero no reconoce los servicios META-INF/services para cargar SPI

Cualquier ayuda sería realmente apreciada.


es fijo. Agregué los archivos jar de lucene en el classpath del servidor de aplicaciones weblogic y está funcionando como se esperaba. No sé por qué no está detectando desde la carpeta lib de mi aplicación como también en la ruta de la clase, pero parece que de alguna manera SPI necesita jar y META-INF en los servidores de aplicaciones classpath



Conseguí este edificio con Gradle usando una solución propuesta para construir un "frasco gordo" (frasco ejecutable que contiene todos los frascos dependientes) aquí .

Pero no funcionó: obtuve este oscuro error con Lucene, pero no cuando estoy probando o construyendo o corriendo normalmente, solo cuando construyo un frasco gordo.

Mi solución fue usar shadow jar : código de 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 }