I had this same problem using a library that used a new codec for lucene. In creating the jar maven was replacing the META-INF. I solved the problem with the following configuration in pom.xml
<configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource> META-INF/services/org.apache.lucene.codecs.Codec </ resource> </ transformer> </ transformers> </ configuration> Adriano 2013/8/21 Duke DAI <duke.dai....@gmail.com> > Hi GD, > > No idea why maven can't work, or the project structure is a little > complex? > > Also sure that lucene 2.9 has no problem with this because it does not > depend on SPI. > > First you need to check the fat jar file and the file > META-INF/services/o.a.l.codecs.Codec and its counterparts are there. > If no, then the workaround is to have way to add all META-INF/services/xxx > into your fat jar. > If yes, the problem may be with classloader, classloader can't locate the > SPI file within its context, I guess it's not this case. > > Hope this help. > > Best regards, > Duke > If not now, when? If not me, who? > > > On Tue, Aug 20, 2013 at 11:09 PM, Gayo Diallo < > gayo.dia...@isped.u-bordeaux2.fr> wrote: > >> Thank you Duke for your help. We have already tried that solution after >> a kindly advise from this mailing list. But we still having the error. >> >> Actually the POM of the project is here >> http://lesimisped.free.fr/servo/pom2.xml. It reuses a project which uses >> Lucene, and the POM is this project is >> http://lesimisped.free.fr/servo/pom.xml. >> With a similar project which uses lucene 2.9 we didn't experienced such >> an issue. >> >> Hope that may help. >> >> Best regards, >> GD >> >> Le 20/08/2013 16:10, Duke DAI a écrit : >> >> The >> linkhttp://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ServicesResourceTransformer >> will >> help. >> >> Best regards, >> Duke >> If not now, when? If not me, who? >> >> >> On Mon, Aug 19, 2013 at 8:48 PM, Amal Kammoun <kammoun.ama...@gmail.com> >> <kammoun.ama...@gmail.com>wrote: >> >> >> Dear All, >> >> Please do you have any advice regarding the issue we raised bellow and in >> the previous post? >> >> Thank you for your help. >> >> best regards, >> Amal >> >> >> find here the two links >> http://lesimisped.free.fr/servo/servicesP1.pnghttp://lesimisped.free.fr/servo/servicesP2.png >> >> When we open org.apache.lucene.codecs.Codec, the both have the same content >> org.apache.lucene.codecs.lucene40.Lucene40Codec >> org.apache.lucene.codecs.lucene3x.Lucene3xCodec >> org.apache.lucene.codecs.lucene41.Lucene41Codec >> org.apache.lucene.codecs.lucene42.Lucene42Codec >> >> Thanks for your help. >> >> >> >> 2013/8/18 Amal Kammoun <kammoun.ama...@gmail.com> <kammoun.ama...@gmail.com> >> >> Hi Uwe, >> >> Please find here the two >> linkshttp://lesimisped.free.fr/servo/servicesP1.pnghttp://lesimisped.free.fr/servo/servicesP2.png >> >> When we open org.apache.lucene.codecs.Codec, the both have the same >> >> content >> >> org.apache.lucene.codecs.lucene40.Lucene40Codec >> org.apache.lucene.codecs.lucene3x.Lucene3xCodec >> org.apache.lucene.codecs.lucene41.Lucene41Codec >> org.apache.lucene.codecs.lucene42.Lucene42Codec >> >> Thanks for your help. >> Amal >> >> >> 2013/8/16 Uwe Schindler <u...@thetaphi.de> <u...@thetaphi.de> >> >> Hi, >> >> >> >> There is no screen shot attached to your mail. Please put it somewhere >> >> in >> >> the web and send a link. >> >> >> >> Uwe >> >> >> >> ----- >> >> Uwe Schindler >> >> H.-H.-Meier-Allee 63, D-28213 Bremen >> >> <http://www.thetaphi.de/> <http://www.thetaphi.de/> http://www.thetaphi.de >> >> eMail: u...@thetaphi.de >> >> >> >> From: Amal Kammoun [mailto:kammoun.ama...@gmail.com >> <kammoun.ama...@gmail.com>] >> Sent: Friday, August 16, 2013 6:08 PM >> To: java-user@lucene.apache.org >> Subject: Re: SPI class of type org.apache.lucene.codecs.Codec error >> >> >> >> Thank you, >> >> We are using Eclipse under Linux, and Java 1.7. Maven Shade is used for >> assembling the project (P1) which depends on another project which uses >> Lucene (P2). P2 uses lucene.core, lucene.queryparser, >> lucene.analyzercommon. >> >> Please find enclosed a screen-shot of the services of the two Jar. >> >> We use to use previous versions of lucene (2.x) and we perform the same >> process of assembling without issue. >> >> Hope this could help. >> >> best regards, >> >> Amal >> >> >> >> >> >> 2013/8/16 Uwe Schindler <u...@thetaphi.de> <u...@thetaphi.de> >> >> Hi, >> >> Maven makes it even simplier to handle this! The problem may be (I am >> >> not >> >> sure not sure, because I don’t know your setup): >> It seems that you are using the Maven Shade Plugin to merge all JAR >> >> files >> >> into one BIG JAR file. During this step, you may be missing to merge all >> the data correctly in your JAR files. Lucene JARs also contain metadata >> >> and >> >> other resources (in addition to class files) in the META-INF folders and >> those are generally not always merged by all those tools, so those must >> >> be >> >> copied and merged if multiple META-INF/services with same name exist. >> >> The >> >> Maven-Shade-Plugin can do this for you, see: >> >> >> >> >> >> http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html >> >> Especially: >> >> >> >> http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ServicesResourceTransformer >> >> It is recommended to use the ServicesResourceTransformer option. >> >> Ideally, you should not change or transform JAR files of Lucene at all >> and not merge them, just ship them with your project as is. Please keep >> them separate, only for special use cases like autostarting double-click >> JAR files, merge them otherwise management gets crazy. >> >> In any case, please check your classpath: >> - Are the *unmodified* lucene-core.jar files in it? >> - Don't use crazy classloader hierarchies. Keep all Lucene code together >> in one classloader (so don't place Lucene JAR files outside your webapp, >> but the code using lucene inside a webapp). >> - If you create uber-JARS (which is a bad idea in general), use >> Maven-Shade plugin and configure it correctly. The Uber-JAR file must >> contain a "META-INF/services" folder with some org.apache.lucene.index.* >> files. >> >> ----- >> Uwe Schindler >> H.-H.-Meier-Allee 63, D-28213 Bremenhttp://www.thetaphi.de >> eMail: u...@thetaphi.de >> >> >> -----Original Message----- >> From: Amal Kammoun [mailto:kammoun.ama...@gmail.com >> <kammoun.ama...@gmail.com>] >> Sent: Friday, August 16, 2013 5:39 PM >> To: java-user@lucene.apache.org >> Subject: SPI class of type org.apache.lucene.codecs.Codec error >> >> Hi, >> >> We are working on a project which uses Lucene 4.2.1. Actually we are >> >> facing >> >> an error message "java.lang. >> ExceptionInInitializerError". We are using Maven for assembling the >> >> project >> >> and we have a dependency between two projects. When we do the test >> with eclipse it works fine. However, when we incorporate our jar in a >> >> client >> >> that is tested outside Eclipse we got the >> >> java.lang.ExceptionInInitializerError. >> >> We are doing workaround to overcome the issue since yesterday, we got >> >> the >> >> same issue with both versions of Lucene 4.2.0 and 4.2.1. >> >> Have you ever experienced such an issue with maven? Are the newer >> Lucene versions safer from such an issue? >> >> Here is the rest of the message error >> Caused by: 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. >> >> Thank you a lot in advance for your support. >> Best regards, >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org >> For additional commands, e-mail: java-user-h...@lucene.apache.org >> >> >> >> >> -- >> >> Dr Gayo Diallo >> PhD, Associate Professor in Computer Sciences >> [image: Université Bordeaux Segalen] <http://www.univ-bordeauxsegalen.fr> >> [image: >> ISPED] <http://www.isped.u-bordeaux2.fr> >> >> ISPED, Université Bordeaux Segalen >> Bât. NB, 1er étage, Bureau 30 >> 146 rue Léo Saignat 33076 Bordeaux cedex >> France >> Tél. +33 (0)5 57579540▪ Fax +33 (0)556240081 >> >> gayo.dia...@isped.u-bordeaux2.fr >> www.gayodiallo.org >> www.univ-bordeauxsegalen.fr >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org >> For additional commands, e-mail: java-user-h...@lucene.apache.org >> > > -- Adriano G Ferreira 11 2366-2388 11 98288-3325 www.indekse.com.br