I've got a class loading problem during the build that's driving me
nuts. I need to give a bit of background info first, so bear with me.
The situation:
I'm trying to get Geronimo to build with one set of client/j2ee
configs that use the Yoko ORB, and one set using the Sun ORB. I got
the existing configs converted to the Yoko ORB and building, and now
I'm working on a set of configs for the Sun ORB. To do this, I made
new client-corba and j2ee-corba configs. The endorsed classes are
placed on the classpath in j2ee-system and client-system, so I needed
to create sun-specific configs for these two, plus client, server,
client-security, and j2ee-security. The changes are very minimal.
The *-system pom.xml files just remove the yoko class path
dependencies, the *-corba jars switch the ORBConfiguration GBean to
the sun version. The rest of the changes are just to the artifact
ids and parent configs. For example, the only difference between the
client-sun and client configs is the artifact name of "client-sun"
and its dependency on "client-system-sun" instead of "client-system".
All of this was building cleaning on Tuesday afternoon. On Wednesday
morning, I did an svn update to keep up with changes, and now I'm
getting a build error due to a class loading problem while trying to
build either client-security-sun or j2ee-security-sun. The yoko
versions of these build fine. Here's the error:
[INFO]
------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO]
------------------------------------------------------------------------
[INFO] org.apache.geronimo.gbean.InvalidConfigurationException: Could
not find getGBeanInfo method on
org.apache.geronimo.security.keystore.FileKeystoreManager
org/apache/geronimo/util/asn1/x509/X509Name
[INFO]
------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.lifecycle.LifecycleExecutionException:
org.apache.geronimo.gbean.InvalidConfigurationException: Could not
find getGBeanInfo method on
org.apache.geronimo.security.keystore.FileKeystoreManager
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:559)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:475)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:454)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:306)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:256)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at
org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at
org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException:
org.apache.geronimo.gbean.InvalidConfigurationException: Could not
find getGBeanInfo method on
org.apache.geronimo.security.keystore.FileKeystoreManager
at
org.apache.geronimo.genesis.MojoSupport.execute(MojoSupport.java:107)
at
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:412)
at
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:534)
... 16 more
Caused by: org.apache.geronimo.common.DeploymentException:
org.apache.geronimo.gbean.InvalidConfigurationException: Could not
find getGBeanInfo method on
org.apache.geronimo.security.keystore.FileKeystoreManager
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:383)
at
org.apache.geronimo.deployment.Deployer$$FastClassByCGLIB$$734a235d.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:855)
at
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
at
org.apache.geronimo.plugin.car.PackageMojo.invokeDeployer(PackageMojo.java:569)
at
org.apache.geronimo.plugin.car.PackageMojo.buildPackage(PackageMojo.java:408)
at
org.apache.geronimo.plugin.car.PackageMojo.doExecute(PackageMojo.java:245)
at
org.apache.geronimo.genesis.MojoSupport.execute(MojoSupport.java:92)
... 18 more
Caused by: org.apache.geronimo.gbean.InvalidConfigurationException:
Could not find getGBeanInfo method on
org.apache.geronimo.security.keystore.FileKeystoreManager
at
org.apache.geronimo.gbean.GBeanInfo.getGBeanInfo(GBeanInfo.java:75)
at
org.apache.geronimo.deployment.service.GBeanBuilder.addGBeanData(GBeanBuilder.java:109)
at
org.apache.geronimo.deployment.service.GBeanBuilder.build(GBeanBuilder.java:99)
at
org.apache.geronimo.deployment.service.GBeanBuilder$$FastClassByCGLIB$$65102f86.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:820)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.deployment.NamespaceDrivenBuilder$$EnhancerByCGLIB$$cc62fbab.build(<generated>)
at
org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection.build(NamespaceDrivenBuilderCollection.java:82)
at
org.apache.geronimo.deployment.service.ServiceConfigBuilder.buildConfiguration(ServiceConfigBuilder.java:218)
at
org.apache.geronimo.deployment.service.ServiceConfigBuilder.buildConfiguration(ServiceConfigBuilder.java:177)
at
org.apache.geronimo.deployment.service.ServiceConfigBuilder$$FastClassByCGLIB$$9f173be6.invoke(<generated>)
at net.sf.cglib.reflect.FastMethod.invoke(FastMethod.java:53)
at
org.apache.geronimo.gbean.runtime.FastMethodInvoker.invoke(FastMethodInvoker.java:38)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:122)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:820)
at
org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:57)
at
org.apache.geronimo.kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
at
org.apache.geronimo.kernel.basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:96)
at
org.apache.geronimo.deployment.ConfigurationBuilder$$EnhancerByCGLIB$$2c071e7c.buildConfiguration(<generated>)
at org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:302)
... 28 more
Caused by: java.lang.NoClassDefFoundError:
org/apache/geronimo/util/asn1/x509/X509Name
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:1655)
at java.lang.Class.getDeclaredMethod(Class.java:1262)
at
org.apache.geronimo.gbean.GBeanInfo.getGBeanInfo(GBeanInfo.java:65)
... 52 more
This is a failure to resolve X509Name, which is in the geronimo-util
package. I have checked, double-checked, and triple-checked the poms
and the plans for all of these configs, and they should have exactly
the same dependencies. However, when I build client-security and
client-security-sun with the -X option, I'm able to see a difference
when it processes the client-system-sun parent configuration:
Parent configurations:
org.apache.geronimo.configs/client-system-sun/1.2-SNAPSHOT/car
ClassPath:
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-security/1.2-SNAPSHOT/geronimo-security-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-connector_1.5_spec/1.0.1/geronimo-j2ee-connector_1.5_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-axis/1.2-SNAPSHOT/geronimo-axis-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/axis/axis/1.4/axis-1.4.jar
file:/c:/.m2/repository/commons-discovery/commons-discovery/0.2/commons-discovery-0.2.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-javamail_1.3.1_spec/1.2-SNAPSHOT/geronimo-javamail_1.3.1_spec-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/wsdl4j/wsdl4j/1.5.2/wsdl4j-1.5.2.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-activation/1.2-SNAPSHOT/geronimo-activation-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-ejb_2.1_spec/1.0.1/geronimo-ejb_2.1_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-transaction/1.2-SNAPSHOT/geronimo-transaction-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-naming/1.2-SNAPSHOT/geronimo-naming-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-activation_1.0.2_spec/1.1/geronimo-activation_1.0.2_spec-1.1.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-management/1.2-SNAPSHOT/geronimo-management-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-saaj_1.1_spec/1.0.1/geronimo-saaj_1.1_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-jaxrpc_1.1_spec/1.0.1/geronimo-jaxrpc_1.1_spec-1.0.1.jar
file:/c:/.m2/repository/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-jacc_1.0_spec/1.0.1/geronimo-j2ee-jacc_1.0_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0.1/geronimo-j2ee-management_1.0_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0.1/geronimo-jta_1.0.1B_spec-1.0.1.jar
file:/c:/.m2/repository/org/openejb/openejb-core/2.2.1-SNAPSHOT/openejb-core-2.2.1-SNAPSHOT.jar
file:/c:/.m2/repository/geronimo-spec/geronimo-spec-corba/1.0/geronimo-spec-corba-1.0.jar
file:/c:/.m2/repository/tranql/tranql/1.4-SNAPSHOT/tranql-1.4-SNAPSHOT.jar
file:/c:/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar
file:/c:/.m2/repository/backport-util-concurrent/backport-util-concurrent/2.2/backport-util-concurrent-2.2.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-j2ee/1.2-SNAPSHOT/geronimo-j2ee-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-connector/1.2-SNAPSHOT/geronimo-connector-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-core/1.2-SNAPSHOT/geronimo-core-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-webservices/1.2-SNAPSHOT/geronimo-webservices-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-jaxr_1.0_spec/1.0.1/geronimo-jaxr_1.0_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-client/1.2-SNAPSHOT/geronimo-client-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.0.1/geronimo-jms_1.1_spec-1.0.1.jar
When compared with the client-security build,
org.apache.geronimo.configs/client-system/1.2-SNAPSHOT/car
ClassPath:
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-security/1.2-SNAPSHOT/geronimo-security-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-connector_1.5_spec/1.0.1/geronimo-j2ee-connector_1.5_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-axis/1.2-SNAPSHOT/geronimo-axis-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/axis/axis/1.4/axis-1.4.jar
file:/c:/.m2/repository/commons-discovery/commons-discovery/0.2/commons-discovery-0.2.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-javamail_1.3.1_spec/1.2-SNAPSHOT/geronimo-javamail_1.3.1_spec-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/wsdl4j/wsdl4j/1.5.2/wsdl4j-1.5.2.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-activation/1.2-SNAPSHOT/geronimo-activation-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-ejb_2.1_spec/1.0.1/geronimo-ejb_2.1_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-util/1.2-SNAPSHOT/geronimo-util-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-naming/1.2-SNAPSHOT/geronimo-naming-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-activation_1.0.2_spec/1.1/geronimo-activation_1.0.2_spec-1.1.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-management/1.2-SNAPSHOT/geronimo-management-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-saaj_1.1_spec/1.0.1/geronimo-saaj_1.1_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-jaxrpc_1.1_spec/1.0.1/geronimo-jaxrpc_1.1_spec-1.0.1.jar
file:/c:/.m2/repository/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-jacc_1.0_spec/1.0.1/geronimo-j2ee-jacc_1.0_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0.1/geronimo-j2ee-management_1.0_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0.1/geronimo-jta_1.0.1B_spec-1.0.1.jar
file:/c:/.m2/repository/org/openejb/openejb-core/2.2.1-SNAPSHOT/openejb-core-2.2.1-SNAPSHOT.jar
file:/c:/.m2/repository/geronimo-spec/geronimo-spec-corba/1.0/geronimo-spec-corba-1.0.jar
file:/c:/.m2/repository/tranql/tranql/1.4-SNAPSHOT/tranql-1.4-SNAPSHOT.jar
file:/c:/.m2/repository/antlr/antlr/2.7.6/antlr-2.7.6.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-j2ee/1.2-SNAPSHOT/geronimo-j2ee-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/backport-util-concurrent/backport-util-concurrent/2.2/backport-util-concurrent-2.2.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-core/1.2-SNAPSHOT/geronimo-core-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-webservices/1.2-SNAPSHOT/geronimo-webservices-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-jaxr_1.0_spec/1.0.1/geronimo-jaxr_1.0_spec-1.0.1.jar
file:/c:/.m2/repository/org/apache/geronimo/modules/geronimo-client/1.2-SNAPSHOT/geronimo-client-1.2-SNAPSHOT.jar
file:/c:/.m2/repository/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.0.1/geronimo-jms_1.1_spec-1.0.1.jar
I see that the client-security-sun config is missing the
geronimo-util jar file from the classpath, but is including
geronimo-transaction and geronimo-connector, which the don't appear
on the client-security classpath.
I'm at a complete loss to explain why these are different. These
configs should be using the same set of dependencies except for the
yoko jars, but they're somehow ending up with different classpaths.
I'm grasping at straws on this one now, so any suggestions are
greatly appreciated.
Rick