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é
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.
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
Vous devez vous connecter pour publier un commentaire.
De voir que vous êtes en tirant dans le
javaee-api
artefact dans votre test de portée, vous pouvez utiliser JBoss fourni Api,Voir cette Arquillian FAQ pour plus de détails.
Ou, dans le cas de WLS, vous pouvez compter sur la
wlfullclient.jar
de fournir les classes nécessaires. Vous aurez besoin de l'installer dans un repo Maven (peut-être dans une organisation à l'échelle), puis y faire référence dans votre projet.OriginalL'auteur Vineet Reynolds
J'ai eu la même erreur avec JBoss 7.1 et 6.1 pae avec télécommande EJB appel, sur fichier de classe
javax/ejb/EJBException
Et résolu le problème de commutation de
à
Peut-être cela devrait aider ?
BR
OriginalL'auteur skay