dev@glassfish.java.net

OSGI bug, cannot find javax.management.ObjectName

From: Lloyd Chambers <Lloyd.Chambers_at_Sun.COM>
Date: Tue, 16 Jun 2009 12:51:02 -0700

I've run into a problem like this before and I don't know why OSGI
requires breaking the JDK. I forget the solution, but I'm stuck
until I find one.
...

Module amx-j2ee-impl has a dependency on module amx-core-impl, and
calls getSelf(J2EEServer.class). Method getSelf() is in a superclass
which is found in the amx-core-impl module. The generated proxy uses
a handler defined in the amx-core module.

The calling code looks like this:

import javax.management.ObjectName; <=== imports the problem class
...
J2EEServer selfProxy = getSelf(J2EEServer.class); <== call superclass
method in another module
ObjectName test = selfProxy.objectName(); <== ClassNotFoundException

The proxy method objectName() returns a javax.management.ObjectName, a
standard class in the JDK.

Yet, I get a NoClassDefFoundError. This seems like a bug to me, and I
don't know how to fix it.


SEVERE: Caused by: java.lang.NoClassDefFoundError: javax/management/
ObjectName
Jun 16, 2009 12:38:16 PM
SEVERE: at $Proxy107.objectName(Unknown Source)
Jun 16, 2009 12:38:16 PM
SEVERE: at
org
.glassfish
.admin
.amx.impl.j2ee.J2EEServerImpl.registerChildren(J2EEServerImpl.java:102)
Jun 16, 2009 12:38:16 PM
SEVERE: at
org
.glassfish
.admin
.amx
.impl.j2ee.DASJ2EEServerImpl.registerChildren(DASJ2EEServerImpl.java:68)
Jun 16, 2009 12:38:16 PM
SEVERE: at
org
.glassfish
.admin.amx.impl.mbean.AMXImplBase.postRegisterHook(AMXImplBase.java:
1218)
Jun 16, 2009 12:38:16 PM
SEVERE: at
org
.glassfish
.admin.amx.impl.mbean.MBeanImplBase.postRegister(MBeanImplBase.java:440)
Jun 16, 2009 12:38:16 PM
SEVERE: at
com
.sun
.jmx
.interceptor
.DefaultMBeanServerInterceptor
.postRegisterInvoke(DefaultMBeanServerInterceptor.java:1035)
Jun 16, 2009 12:38:16 PM
SEVERE: ... 15 more
Jun 16, 2009 12:38:16 PM
SEVERE: Caused by: java.lang.ClassNotFoundException:
javax.management.ObjectName
Jun 16, 2009 12:38:16 PM
SEVERE: at
org
.apache
.felix
.framework
.searchpolicy
.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:618)
Jun 16, 2009 12:38:16 PM
SEVERE: at org.apache.felix.framework.searchpolicy.ModuleImpl.access
$100(ModuleImpl.java:59)
Jun 16, 2009 12:38:16 PM
SEVERE: at org.apache.felix.framework.searchpolicy.ModuleImpl
$ModuleClassLoader.loadClass(ModuleImpl.java:1446)
Jun 16, 2009 12:38:16 PM
SEVERE: at java.lang.ClassLoader.loadClass(ClassLoader.java:254)
Jun 16, 2009 12:38:16 PM
SEVERE: at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:
402)
Jun 16, 2009 12:38:16 PM
SEVERE: ... 21 more
Jun 16, 2009 12:38:16 PM
org.glassfish.admin.amx.impl.loader.AMXStartupServiceNew _loadAMXMBeans