Am 18.08.2015 03:53, schrieb William Markito:
Hi folks,

   Any recommendations for the following problem ? I'm not sure it's a
problem on Geode implementation..

Thanks!

---- Groovy Code --

@GrabResolver(name='asf-snapshots', 
root="https://repository.apache.org/content/repositories/snapshots";)
@Grapes(
         @Grab(group="org.apache.geode", module ="gemfire-core", version 
="1.0.0-incubating-SNAPSHOT")
)

importcom.gemstone.gemfire.cache.client.ClientCache
importcom.gemstone.gemfire.cache.client.ClientCacheFactory


cache =newClientCacheFactory()
         .addPoolLocator("localhost",10334)
         .create();

-----
------  Exception

Caught: java.lang.LinkageError: loader constraint violation in interface
[...]

basically it means the bootloader is loading javax.management classes and the RootLoader does so as well.. for the same classes. RootLoader is a child of the bootloader and is normally supposed to redirect request to its parent for class requests and only react if the parent cannot. Now RootLoader violates that constraint on purpose and in most cases this is fine... as long as no normal java classes are involved with that.

This means the configuration for RootLoader contains a path, that also includes javax.management classes, that duplicate the ones from the jdk. That should not be the case and they should be removed. If you could find out where those come from, it would help a lot. Or are you simply using the default distribution of Groovy? If yes, then we might have to remove a jar in there. That would fix the issue I think. If of course those classes come from gemfire I would argue gemfire is doing something wrong here. Because normally RootLoader is used to add those jars to.

A @GrabExclude could be used if those classes are pulled in through a dependency of gemfire-core (in that case we should check if the dependency is optional)

As an alternative you could try to use @GrabConfig(systemClassLoader=true) inside the @Grapes. This will force the Gemfire classes being loaded by the system loader instead, bypassing the issue above maybe.

bye blackdrag


itable initialization: when resolving method
"com.gemstone.gemfire.internal.cache.control.InternalResourceManager$DummyMemoryPoolMXBean.getObjectName()Ljavax/management/ObjectName;"
the class loader (instance of org/codehaus/groovy/tools/RootLoader) of
the current class,
com/gemstone/gemfire/internal/cache/control/InternalResourceManager$DummyMemoryPoolMXBean,
and the class loader (instance of <bootloader>) for interface
java/lang/management/PlatformManagedObject have different Class objects
for the type javax/management/ObjectName used in the signature
[info 2015/08/17 18:36:43.352 PDT <Distributed system shutdown hook>
tid=0xe] VM is exiting - shutting down distributed system
java.lang.LinkageError: loader constraint violation in interface itable
initialization: when resolving method
"com.gemstone.gemfire.internal.cache.control.InternalResourceManager$DummyMemoryPoolMXBean.getObjectName()Ljavax/management/ObjectName;"
the class loader (instance of org/codehaus/groovy/tools/RootLoader) of
the current class,
com/gemstone/gemfire/internal/cache/control/InternalResourceManager$DummyMemoryPoolMXBean,
and the class loader (instance of <bootloader>) for interface
java/lang/management/PlatformManagedObject have different Class objects
for the type javax/management/ObjectName used in the signature



--
Jochen "blackdrag" Theodorou
blog: http://blackdragsview.blogspot.com/

Reply via email to