2013-03-13 3 views
2

WebLogic 12C에 대해 Arquillian을 사용하려고합니다. ClassFormatError : 클래스 파일 javax/transaction/SystemException에 네이티브 또는 추상 메소드가 아닌 메소드의 코드 속성이 없습니다.

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

마지막으로 내가 가진 아카이브를 "만드는"시도 :

내가

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

그럼 내 pom.xml 파일에 다음과 같은 구성을 넣어, 나는 다음과 같이 arquillian.xml 파일을 구성 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) 

구성에 어떤 문제가 있습니까? 이전에 볼 수 있듯이, 나는 당신에 javaee-api 유물 당기는 있다는 것을 당신의 도움이

감사

+0

Arquillian Core 1.0.3.Final 또는 1.0.1.Final을 사용해 보셨습니까? CR7은 아주 오래되었습니다. –

+0

나는 그 릴리스를 시험해 보았고 나는 같은 행동을 취했다. –

+1

혹시 오라클이'javaee-api' 아티팩트를 풀어 냈는지 알 수 있겠습니까? 'mvn dependency : tree'는 여기서 도움이 될 것입니다. 활성화가 필요한 프로파일을 사용하는 경우 Maven 프로파일을 지정해야합니다. –

답변

2

보고 사전에 클래스 패스에

감사를 wlfullclient 항아리과 jboss API를 항아리를 추가하려고 테스트 범위, JBoss에서 제공하는 API를 사용할 수도 있습니다.

자세한 내용은 this Arquillian FAQ을 참조하십시오.

또는 WLS의 경우에는 wlfullclient.jar을 사용하여 필요한 클래스를 제공 할 수 있습니다. Maven 저장소 (조직 전체의 저장소)에 설치 한 다음 프로젝트에서 참조해야합니다.

8

나는 클래스 파일 모두 javax/EJB/넣어지고있는 EJBException에게

에, 보스 7.1 및 원격 EJB 호출로 6.1 EAP와 유사한 오류가 발생했습니다 그리고

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

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

에서 전환 문제가 해결

아마도 도움이 될까요?
BR

+1

굉장합니다. 참고 : 6.0-5가 빠져 있습니다. – javaPlease42