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 <[email protected]>
> 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 <
> [email protected]> 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 <[email protected]>
>> <[email protected]>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 <[email protected]> <[email protected]>
>>
>> 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 <[email protected]> <[email protected]>
>>
>> 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: [email protected]
>>
>>
>>
>> From: Amal Kammoun [mailto:[email protected]
>> <[email protected]>]
>> Sent: Friday, August 16, 2013 6:08 PM
>> To: [email protected]
>> 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 <[email protected]> <[email protected]>
>>
>> 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: [email protected]
>>
>>
>> -----Original Message-----
>> From: Amal Kammoun [mailto:[email protected]
>> <[email protected]>]
>> Sent: Friday, August 16, 2013 5:39 PM
>> To: [email protected]
>> 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: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>>
>>
>> --
>>
>> 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
>>
>> [email protected]
>> www.gayodiallo.org
>> www.univ-bordeauxsegalen.fr
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>
>
--
Adriano G Ferreira
11 2366-2388
11 98288-3325
www.indekse.com.br