[forge-issues] [JBoss JIRA] (FORGE-908) LinkageError while using ShrinkWrap classes in Arquillian

Lincoln Baxter III (JIRA) jira-events at lists.jboss.org
Fri May 17 00:51:06 EDT 2013


     [ https://issues.jboss.org/browse/FORGE-908?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Lincoln Baxter III closed FORGE-908.
------------------------------------

    Fix Version/s: 2.0.0.Alpha5
       Resolution: Done


Fixed by removing shrinkwrap descriptor API classes from auxiliary archives. This may become a problem again later if additional classes are in conflict, but the temporary solution lies in this approach:

{code}
public class ForgeAuxiliaryArchiveProcessor implements AuxiliaryArchiveProcessor
{
   @Override
   public void process(Archive<?> archive)
   {
      if ("arquillian-core.jar".equals(archive.getName()))
      {
         Node node = archive.get("org/jboss/shrinkwrap/descriptor");
         if (node != null)
            archive.delete(node.getPath());
      }
   }
}
{code}

Registered in:
{code}
public class ForgeLoadableExtension implements LoadableExtension
{
   @Override
   public void register(ExtensionBuilder builder)
   {
      builder.service(DeployableContainer.class, ForgeDeployableContainer.class);
      builder.service(DeploymentScenarioGenerator.class, ForgeDeploymentScenarioGenerator.class);
      builder.service(Protocol.class, ForgeProtocol.class);
      builder.service(AuxiliaryArchiveProcessor.class, ForgeAuxiliaryArchiveProcessor.class);
   }
}
{code}

The ultimate solution would be to implement addons that provide the required test-classes, on which the deployed addons would depend, thus eliminating the duplicate class definition problem altogether, while still leaving the classes available for use.
                
> LinkageError while using ShrinkWrap classes in Arquillian
> ---------------------------------------------------------
>
>                 Key: FORGE-908
>                 URL: https://issues.jboss.org/browse/FORGE-908
>             Project: Forge
>          Issue Type: Bug
>          Components: Java EE APIs
>    Affects Versions: 2.0.0.Alpha4
>            Reporter: George Gastaldi
>            Assignee: Lincoln Baxter III
>             Fix For: 2.0.0.Alpha5
>
>
> In javaee-tests, if you remove the @Ignore from the test test.org.jboss.forge.javaee.servlet.ServletFacetTest.testWebXMLCreatedWhenInstalled() you get the following exception:
> {code}
> Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/jboss/modules/ModuleClassLoader) previously initiated loading for a different type with name "org/jboss/shrinkwrap/descriptor/api/webapp30/WebAppDescriptor"
> 	at java.lang.ClassLoader.defineClass1(Native Method)
> 	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
> 	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
> 	at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:344)
> 	at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:422)
> 	at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:260)
> 	at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:75)
> 	at org.jboss.modules.Module.loadModuleClass(Module.java:528)
> 	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:188)
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:444)
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:432)
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:399)
> 	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:374)
> 	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:119)
> 	at test.org.jboss.forge.javaee.servlet.ServletFacetTest.testWebXMLCreatedWhenInstalled(ServletFacetTest.java:63)
> 	... 88 more
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the forge-issues mailing list