2017-04-18 44 views
0

我試圖將ejb jar文件部署到jboss eap 7.0.0作爲maven項目。該項目使用Config-1.3.1.jar作爲我添加到項目的pom.xml中的依賴項。我是jboss和maven的新手,所以我不知道我在這裏做錯了什麼。下面是pom.xml中將.jar部署到jboss eap時得到反射信息錯誤7

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<parent> 
    <groupId>xxx.xxx.xxx</groupId> 
    <artifactId>xxx-xxx-xxx-xxx</artifactId> 
    <version>xxx</version> 
</parent> 

<artifactId>xxx-xxx-xxx-ejb</artifactId> 
<name>xxx-xxx-xxx-ejb</name> 
<packaging>jar</packaging> 

<dependencies> 
    <dependency> 
     <groupId>org.jboss.spec.javax.ejb</groupId> 
     <artifactId>jboss-ejb-api_3.2_spec</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.jboss.logging</groupId> 
     <artifactId>jboss-logging</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.mockito</groupId> 
     <artifactId>mockito-core</artifactId> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.typesafe</groupId> 
     <artifactId>config</artifactId> 
     <version>1.3.1</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.javatuples</groupId> 
     <artifactId>javatuples</artifactId> 
     <version>1.2</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

<build> 
    <finalName>xxx-xxx-xxx-ejb</finalName> 
</build> 

但是,當我嘗試部署罐子到JBoss,我得到的錯誤(S):

09:50:44,211 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) 
MSC000001: Failed to start service jboss.deployment.unit."xxx-xxx-xxx-ejb.jar".POST_MODULE: 
org.jboss.msc.service.StartException in service jboss.deployment.unit."xxx-xxx-xxx-ejb.jar".POST_MODULE: WFLYSRV0153: Failed to 
process phase POST_MODULE of deployment "xxx-xxx-xxx- 
ejb.jar" 
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class xxx.mbean.ConfigCache with ClassLoader ModuleClassLoader for Module "deployment.xxx-xxx-xxx-ejb.jar:main" from Service Module Loader 
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) 
at org.jboss.as.ee.metadata.MethodAnnotationAggregator.runtimeAnnotationInformation(MethodAnnotationAggregator.java:57) 
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.handleAnnotations(InterceptorAnnotationProcessor.java:106) 
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.processComponentConfig(InterceptorAnnotationProcessor.java:91) 
at org.jboss.as.ee.component.deployers.InterceptorAnnotationProcessor.deploy(InterceptorAnnotationProcessor.java:76) 
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:147) 
... 5 more 
Caused by: java.lang.NoClassDefFoundError: com/typesafe/config/Config 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) 
at java.lang.Class.getDeclaredMethods(Class.java:1975) 
at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:80) 
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66) 
... 10 more 
Caused by: java.lang.ClassNotFoundException: com.typesafe.config.Config from [Module "deployment.xxx-xxx-xxx-ejb.jar:main" from Service Module Loader] 
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351) 
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93) 
... 15 more 

有誰知道我在做什麼這裏錯了嗎?如果需要,我很樂意發佈更多信息。

回答

0

你需要找到一種方法,使這種依賴的類:

<dependency> 
    <groupId>com.typesafe</groupId> 
    <artifactId>config</artifactId> 
    <version>1.3.1</version> 
    <scope>provided</scope> 
</dependency> 

,可能這一個:

<dependency> 
    <groupId>org.javatuples</groupId> 
    <artifactId>javatuples</artifactId> 
    <version>1.2</version> 
    <scope>provided</scope> 
</dependency> 

提供給您的EJB JAR。

這通常是通過將這些jar與您的EJB jar一起打包到EAR文件中來完成的。

或者,您可以使用Class Loading in WildFly 10中描述的方法之一。

最終取決於您的EJB的作用以及它們的客戶端(如果有)在哪裏部署。

例如,它可能會更容易到項目的包裝類型更改爲:

<artifactId>xxx-xxx-xxx-ejb</artifactId> 
<packaging>war</packaging> 

讓你的依賴得到在WEB-INF/lib目錄下添加(如果去掉provided範圍),這是比編寫EAR文件要容易得多。

Java EE 6和7允許在WAR文件中部署EJB。