[arquillian-issues] [JBoss JIRA] (ARQ-1944) Linkage error with arquillian-junit.jar

Marc Richards (JIRA) issues at jboss.org
Sat Jan 30 18:23:00 EST 2016


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

Marc Richards edited comment on ARQ-1944 at 1/30/16 6:22 PM:
-------------------------------------------------------------

Just wanted to add a few clarifications from my own testing as well

1) Yea, the latest releases of arquillian-tomcat-embedded have a bug when used with tomcat versions lower than 7.0.52, which makes the issue even more tricky: https://issues.jboss.org/browse/ARQ-1965

2) My errors are not related to hamcrest at all, the loader constraint violations are thrown for my own classes e.g.

{code:java}
java.lang.LinkageError: loader constraint violation: when resolving method "myorg.model.PollingEvent.<init>(Lorg/joda/time/DateTime;Lmyorg/rest/model/OrderStatus;Lorg/joda/time/DateTime;)V" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, myorg/db/PollingEventManager, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for the method's defining class, myorg/model/PollingEvent, have different Class objects for the type myorg/rest/model/OrderStatus used in the signature
{code}

or

{code:java}
java.lang.LinkageError: loader constraint violation: loader (instance of sun/misc/Launcher$AppClassLoader) previously initiated loading for a different type with name "myorg/rest/model/Product"
{code}

3) Using @RunAsClient does workaround the issue for me as well except for some tests, however some tests make use of features of the app server and cannot be run as client


was (Author: talawahdotnet):
Just wanted to add a few clarifications from my own testing as well

1) Yea, the latest releases of arquillian-tomcat-embedded have a bug when used with tomcat versions lower than 7.0.52, which makes the issue even more tricky: https://issues.jboss.org/browse/ARQ-1965

2) My errors are not related to hamcrest at all, the loader constraint violations are thrown for my own classes e.g.

{code:java}
java.lang.LinkageError: loader constraint violation: when resolving method "myorg.model.PollingEvent.<init>(Lorg/joda/time/DateTime;Lmyorg/rest/model/OrderStatus;Lorg/joda/time/DateTime;)V" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, myorg/db/PollingEventManager, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for the method's defining class, myorg/model/PollingEvent, have different Class objects for the type myorg/rest/model/OrderStatus used in the signature
{code}

or

{code:java}
java.lang.LinkageError: loader constraint violation: loader (instance of sun/misc/Launcher$AppClassLoader) previously initiated loading for a different type with name "myorg/rest/model/Product"
{code}

3) Using @RunAsClient does workaround the issue for me as well except for some tests, however some tests make use of features of the app server and cannot be run as client

3) 

> Linkage error with arquillian-junit.jar
> ---------------------------------------
>
>                 Key: ARQ-1944
>                 URL: https://issues.jboss.org/browse/ARQ-1944
>             Project: Arquillian
>          Issue Type: Bug
>    Affects Versions: 1.1.7.Final, 1.1.8.Final, 1.1.9.Final, 1.1.10.Final, 1.1.11.Final
>         Environment: JDK7, Windows 7 x64, Linux x64
>            Reporter: Chris Rankin
>         Attachments: arquillian-hamcrest-test.tar.xz
>
>
> Testing a WAR in embedded Tomcat >= 7.0.51 using Restassured, JUnit and Hamcrest matchers. (TestNG works fine).
> The test fails with this error message:
> {code}Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 3.404 sec <<< FAILURE! - in org.testing.web.TroubleIT
> testTrouble(org.testing.web.TroubleIT)  Time elapsed: 0.774 sec  <<< ERROR!
> java.lang.LinkageError: loader constraint violation: when resolving interface method "com.jayway.restassured.specification.ResponseSpecification.statusCode(Lorg/hamcrest/Matcher;)Lcom/jayway/restassured/specification/ResponseSpecification;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, org/testing/web/TroubleIT, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for resolved class, com/jayway/restassured/specification/ResponseSpecification, have different Class objects for the type cification.statusCode(Lorg/hamcrest/Matcher;)Lcom/jayway/restassured/specification/ResponseSpecification; used in the signature
> 	at org.testing.web.TroubleIT.testTrouble(TroubleIT.java:35)
> {code}
> This error can be resolved in four different ways:
> - Rewrite the test using TestNG
> - Rewrite the test without using any Hamcrest matchers.
> - Remove "org.hamcrest" from {{org.jboss.arquillian.junit.container.JUnitDeploymentAppender}}.
> - Set {{@Deployment(testable = false)}} to prevent Arquillian from packaging its artifacts into the deployment in the first place.
> See [Issue #78 for arquillian-core|https://github.com/arquillian/arquillian-core/issues/78]



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the arquillian-issues mailing list