[
https://issues.jboss.org/browse/WELD-1074?page=com.atlassian.jira.plugin....
]
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