[weld-issues] [JBoss JIRA] (WELD-1074) Using `new Weld()` fails with java.lang.IncompatibleClassChangeError when Guava on classpath?

Ales Justin (JIRA) jira-events at lists.jboss.org
Sat Mar 3 16:21:36 EST 2012


    [ https://issues.jboss.org/browse/WELD-1074?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12673387#comment-12673387 ] 

Ales Justin commented on WELD-1074:
-----------------------------------

Which weld-se jar are you using?

As there is shaded SE and pure core SE jar.
If shaded, then it could be an issue of dup classes perhaps?

Any way to create some test for this?

                
> Using `new Weld()` fails with java.lang.IncompatibleClassChangeError when Guava on classpath?
> ---------------------------------------------------------------------------------------------
>
>                 Key: WELD-1074
>                 URL: https://issues.jboss.org/browse/WELD-1074
>             Project: Weld
>          Issue Type: Bug
>          Components: Bootstrap and Metamodel API
>            Reporter: Aled Sage
>
> I am running Weld in a vanilla JVM using `new Weld()` (having been blocked in AS 7 by https://community.jboss.org/thread/154405).
> I am getting the error shown below. I presume Weld is doing some special classloading that causes it to pick up Guava from somewhere other than the head of the classpath? My question/bug is:
> * is the classloading behaviour documented; are there things that a user must not do?
> * is this error caused by me having Guava ahead of the weld jar on the classpath, and if so can such errors be avoided in weld? Or is it just always necessary to avoid having Weld dependencies ahead of 
> ---
> I have built Weld myself from master (1.1.6-SNAPSHOT, git commit 282f830) so have the version with guava dependency 11.0.2.
> (Thanks Ales for fixing that one!)
> ---
> (note I also put in an extra catch block into BeanDeployer so that it would tell me which class it was trying to load when it got this error).
> org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class com.google.common.collect.StandardTable$ColumnMap
>         at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:167)
>         at org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:88)
>         at org.jboss.weld.bootstrap.BeanDeployer.addClasses(BeanDeployer.java:118)
>         at org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:171)
>         at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:336)
>         at org.jboss.weld.environment.se.Weld.initialize(Weld.java:86)
>         at net.ezbrokerage.launcher.EzBrokerageLauncher.<init>(EzBrokerageLauncher.java:31)
>         at net.ezbrokerage.launcher.MontereyVenueLauncher.<init>(MontereyVenueLauncher.java:45)
>         at net.ezbrokerage.launcher.MontereyVenueLauncher.main(MontereyVenueLauncher.java:86)
> Caused by: java.lang.reflect.GenericSignatureFormatError
>         at sun.reflect.generics.parser.SignatureParser.error(SignatureParser.java:103)
>         at sun.reflect.generics.parser.SignatureParser.parseSimpleClassTypeSignature(SignatureParser.java:262)
>         at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignatureSuffix(SignatureParser.java:270)
>         at sun.reflect.generics.parser.SignatureParser.parseClassTypeSignature(SignatureParser.java:244)
>         at sun.reflect.generics.parser.SignatureParser.parseFieldTypeSignature(SignatureParser.java:228)
>         at sun.reflect.generics.parser.SignatureParser.parseTypeSignature(SignatureParser.java:359)
>         at sun.reflect.generics.parser.SignatureParser.parseTypeSig(SignatureParser.java:157)
>         at sun.reflect.generics.repository.FieldRepository.parse(FieldRepository.java:34)
>         at sun.reflect.generics.repository.FieldRepository.parse(FieldRepository.java:24)
>         at sun.reflect.generics.repository.AbstractRepository.<init>(AbstractRepository.java:56)
>         at sun.reflect.generics.repository.FieldRepository.<init>(FieldRepository.java:30)
>         at sun.reflect.generics.repository.FieldRepository.make(FieldRepository.java:48)
>         at java.lang.reflect.Field.getGenericInfo(Field.java:85)
>         at java.lang.reflect.Field.getGenericType(Field.java:223)
>         at org.jboss.weld.introspector.jlr.WeldFieldImpl.of(WeldFieldImpl.java:52)
>         at org.jboss.weld.introspector.jlr.WeldClassImpl.<init>(WeldClassImpl.java:155)
>         at org.jboss.weld.introspector.jlr.WeldClassImpl.of(WeldClassImpl.java:119)
>         at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:59)
>         at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:50)
>         at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:355)
>         at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184)
>         at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153)
>         at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69)
>         at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393)
>         at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:163)
>         ... 8 more
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class
>         at java.lang.ClassLoader.defineClass1(Native Method)
>         at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
>         at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
>         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>         at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
>         at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>         at java.lang.ClassLoader.defineClass1(Native Method)
>         at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
>         at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
>         at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>         at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
>         at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
>         at org.jboss.weld.environment.se.discovery.url.WeldSEResourceLoader.classForName(WeldSEResourceLoader.java:40)
>         at org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:78)
>         at org.jboss.weld.bootstrap.BeanDeployer.addClasses(BeanDeployer.java:118)
>         at org.jboss.weld.bootstrap.BeanDeployment.createBeans(BeanDeployment.java:171)
>         at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:336)
>         at org.jboss.weld.environment.se.Weld.initialize(Weld.java:86)
>         at net.ezbrokerage.launcher.EzBrokerageLauncher.<init>(EzBrokerageLauncher.java:31)
>         at net.ezbrokerage.launcher.MontereyVenueLauncher.<init>(MontereyVenueLauncher.java:45)
>         at net.ezbrokerage.launcher.MontereyVenueLauncher.main(MontereyVenueLauncher.java:86)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the weld-issues mailing list