Hi Matt,

I got around the problem.

Background:

I am using Maven 2 with vendor provided JCE jars installed in jre/lib/ext.  The
IsolatedClassloader of the Surefire plugin was not finding the JCE classes
and reporting NoClassDefFoundErrors when running Junit tests.

I tried to configure the maven-surefire-plugin to use the system classloader
by adding the following to my pom.xml:

           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>*maven-surefire-plugin*</artifactId>
               <configuration>
               <!--childDelegation>false</childDelegation-->
               *<useSystemClassLoader>true</useSystemClassLoader>*
               </configuration>
           </plugin>

When I tried using <useSystemClassloader>true</useSystemClassloader>, I was
hoping surefire would find the classes in jre/lib/ext however I got
a NoClassDefFound on the SurefireBooter as follows (surefire bug):

[INFO] Building jar: c:\temp\surefirebooter37241.jar
java.lang.NoClassDefFoundError:
org/apache/maven/surefire/booter/SurefireBooter
Exception in thread "main"

I eventually took all of the JCE provider jars out of jre/lib/ext because I
am using JDK1.5 and put the jar files as dependencies using "system" as the
scope in Maven.  Adding the following to pom.xml:

<dependency>
           <groupId>com.ingrian</groupId>
           <artifactId>nae.provider</artifactId>
           *<scope>system</scope>           **
      <systemPath>C:\work\path\to\jar\IngrianNAE.jar</systemPath>
*</dependency>

<dependency>
           <groupId>cryptix</groupId>
           <artifactId>cryptix</artifactId>
*            <scope>system</scope>
           **<systemPath>C:\work\path\to\jar\cryptix-jce-api.jar
</systemPath>
*</dependency>

In this way I don't have to set useSystemClassloader = true and the tests move
farther.
Regards,
Abe


On 7/24/07, Matt Raible <[EMAIL PROTECTED]> wrote:

Unfortunately, I don't know how to solve this. I generally try to keep
jre/lib/ext clean. The fact that a vendor *requires* you to put it's
JARs there seems strange to me. The only reason I can think of is
they're tired of telling customers how to modify their classpath - or
they need their JARs to load first (which should be able to be
controlled by the CLASSPATH as well).

You might try asking surefire-specific questions on the Maven user mailing
list.

Matt

On 7/23/07, Developer Abe <[EMAIL PROTECTED]> wrote:
> I am working with a set of jar files which have to be installed in
> jre/lib/ext
>
> One of the vendors jar files is a version of log4j.
>
> I was wondering how to configure the
> <useSystemClassLoader>true</useSystemClassLoader>
> attribute for the surefire plugin in appfuse.
>
> I tried adding the vendor's log4j jar to the maven repository and
> dependencies section of my pom.xml because I was originally getting a
bunch
> of NoClassDefFoundErrors because Maven could not find the classes in the
jar
> files in jre/lib/ext.  I have a feeling it has to do with surefire's
> IsolatedClassLoader.
>
> When I added the dependencies manually I am getting errors related to
not
> finding properties files and not being able to assign one class loaded
by
> the SystemExt loader to surefire's Isolated class loader.
>
> I am hoping to get surefire to use the system class loader and remove
the
> dependencies in my pom.xml.
>
> Does anyone know how to set the
> <useSystemClassLoader>true</useSystemClassLoader> attribute
> in appfuse.
>
> Regards,
> Abe
>
>


--
http://raibledesigns.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to