2013-03-13 3 views
2

Я пытаюсь использовать Arquillian для weblogic 12C.ClassFormatError: Отсутствует атрибут кода в методе, который не является родным или абстрактным в файле класса javax/transaction/SystemException

я поставил следующую конфигурацию в моем 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> 

Затем я настроил файл arquillian.xml следующим образом:

<?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> 

Наконец я попытался «создать» архив с 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; 

Итак, после всех этих вещей у меня всегда возникает следующая ошибка :

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) 

Что случилось с моей конфигурацией? Как вы можете видеть, прежде чем я пытался добавить путь к классам в wlfullclient банку и JBoss апи банку

Заранее спасибо за помощь

С уважением

+0

Вы пытались использовать Arquillian Core 1.0.3.Final или 1.0.1.Final? CR7 очень старый. –

+0

Я пробовал эти выпуски, и у меня такое же поведение –

+1

Можете ли вы посмотреть, не попали ли вы в артефакт «javaee-api» из Oracle, случайно? 'mvn dependency: tree' поможет здесь. Вам нужно указать профили Maven, если вы используете те, которые нуждаются в активации. –

ответ

2

Видя, что вы тянете в javaee-api артефакт в вы можете использовать API-интерфейс JBoss,

Для получения более подробной информации см. this Arquillian FAQ.

Или, в случае WLS, вы можете положиться на wlfullclient.jar, чтобы предоставить требуемые классы. Вам нужно будет установить его в репозиторий Maven (возможно, в рамках всей организации), а затем ссылаться на него в своем проекте.

8

Я имел подобную ошибку с JBoss 7.1 и 6.1 еар с удаленным вызовом EJB, на файл класс javax/EJB/EJBException

И решить проблему переключения из

<groupId>javax</groupId> 
<artifactId>javaee-api</artifactId> 
<version>6.0</version> 

в

<groupId>org.apache.openejb</groupId> 
<artifactId>javaee-api</artifactId> 
<version>6.0-5</version> 

Возможно, это должно помочь?
BR

+1

Awesome. Примечание: 6.0-5 отсутствует. – javaPlease42

Смежные вопросы

 Смежные вопросы