ClassFormatError: en l'Absence d'attribut Code de la méthode, qui n'est pas natif ou abstraits dans le fichier de la classe javax/transaction/SystemException

Je suis en train d'utiliser Arquillian contre weblogic 12C.

J'ai mis la configuration suivante dans mon pom.xml

<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<version>1.0.0.CR7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.protocol</groupId>
<artifactId>arquillian-protocol-servlet</artifactId>
<version>1.0.0.CR7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-impl-maven</artifactId>
<version>1.0.0-beta-5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-wls-remote-12.1</artifactId>
<version>1.0.0.Alpha2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>weblogic</groupId>
<artifactId>wlfullclient</artifactId>
<version>12.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>3.0.0.Final</version>
<scope>test</scope>
</dependency>

Ensuite, j'ai configuré l'arquillian.xml fichier comme suit :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jboss.org.schema/arquillian"
xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
<container qualifier="weblogic" default="true">
<configuration>
<protocol type="Servlet 3.0">
<property name="executionType">REMOTE</property>
</protocol>
<property name="adminUrl">t3://localhost:7001</property>
<property name="adminUserName">weblogic</property>
<property name="adminPassword">weblogic1</property>
<property name="target">AdminServer</property>
<property name="wlsHome">c:\java\servers\wls12c\wlserver</property>
</configuration>
</container>
</arquillian>

Enfin j'ai essayé de "créer" une archive avec Arquillian :

 JavaArchive ejbArchive = ShrinkWrap.create(JavaArchive.class,"jee6app-ejb.jar").addAsResource("META-INF/persistence.xml","META-INF/persistence.xml").addPackages(false,Adr.class.getPackage(),Service.class.getPackage());
EnterpriseArchive earArchive = ShrinkWrap.create(EnterpriseArchive.class, "jee6app.ear").addAsModule(ejbArchive).addAsLibraries(
new File("target/test-libs/validation-api.jar"),
new File("target/test-libs/hibernate-entitymanager.jar"),
new File("target/test-libs/hibernate-validator.jar"),
new File("target/test-libs/javassist.jar"),
new File("target/test-libs/asm.jar"),
new File("target/test-libs/cglib.jar"),
new File("target/test-libs/hibernate-jpa.jar"),
new File("target/test-libs/hibernate-commons-annotations.jar"),
new File("target/test-libs/hibernate-annotations.jar"),
new File("target/test-libs/slf4j-api.jar"),
new File("target/test-libs/jta.jar"),
new File("target/test-libs/dom4j.jar"),
new File("target/test-libs/commons-collections.jar"),
new File("target/test-libs/antlr.jar"),
new File("target/test-libs/hibernate-core.jar")
);
return earArchive;

Donc, après toutes ces choses, j'ai toujours le message d'erreur suivant :

Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/transaction/SystemException
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)

Quel est le problème dans ma configuration? Comme vous pouvez le voir avant, j'ai essayé d'ajouter au classpath la wlfullclient bocal et jboss api pot

Merci d'avance pour votre aide

Ce qui concerne

Avez-vous essayez d'utiliser Arquillian de Base 1.0.3.Finale ou la version 1.0.1.Final? CR7 est très ancienne.
J'ai essayé ces versions et j'ai le même comportement
Pouvez-vous voir si vous êtes en tirant dans l'Oracle a publié javaee-api artefact, par hasard? mvn dependency:tree serait de l'aide ici. Vous aurez besoin de spécifier les profils Maven, si vous êtes à l'aide de ceux qui ont besoin d'activation.
Oui en effet, j'utilise le javaee6-api artefact. Après avoir repéré tout autour du web, j'ai vu que cet artefact est ok pour les versions mais inutilisable pour l'exécution comme arquillian tests ou de simples tests junit.
Oui, vous aurez besoin d'exclure l'artefact pour vos tests.

OriginalL'auteur Alexandre T | 2013-03-13