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

Aled Sage commented on WELD-1074:
---------------------------------

I had on my classpath: 
org/jboss/weld/se/weld-se/1.1.6-SNAPSHOT/weld-se-1.1.6-SNAPSHOT.jar and (later 
in the classpath) a shaded jar that also includes org.jboss.weld classes. 
Digging into this more, it looks like that shaded jar contains 
org/jboss/weld/se/weld-se/1.1.5.Final/weld-se-1.1.5.Final.jar and 
org/jboss/weld/weld-build-config/1.1.5.Final/weld-build-config-1.1.5.Final.jar. 
Note the different version number.

I'm now using a classpath based on exactly what maven pulls in (by copying 
System.getProperty("java.class.path") from when I run it in my IDE), rather 
than using a hand crafted approximation. This makes the error go away. So your 
suggestion of dup classes sounds spot on.

I'll experiment more to produce a test when I get a chance, but probably not in 
the next couple of days.
                
> 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

        
_______________________________________________
weld-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-issues

Reply via email to