java 部署期间 ClassNotFound 异常

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13027436/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 11:13:26  来源:igfitidea点击:

ClassNotFound exception during deploy

javadeploymentintellij-ideajboss7.xclassnotfoundexception

提问by Kirill Bazarov

I am in trouble! I am trying to deploy my app on JBoss AS 7.1.1.Finalby IntelliJ IDEA 11and during deploy I have this exception :

我有麻烦了!我想部署我的应用程序JBoss AS 7.1.1.Final通过IntelliJ IDEA 11和部署过程中我有这样的例外:

12:23:42,566 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.deployment.subunit."kladr.ear"."kladr-ejb-1.0-SNAPSHOT.jar".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."kladr.ear"."kladr-ejb-1.0-SNAPSHOT.jar".POST_MODULE: Failed to process phase POST_MODULE of subdeployment "kladr-ejb-1.0-SNAPSHOT.jar" of deployment "kladr.ear"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_37]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_37]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_37]
Caused by: java.lang.RuntimeException: Error getting reflective information for class com.kmware.ttk.kladr.dao.KladrUpdateDAO with ClassLoader ModuleClassLoader for Module "deployment.kladr.ear.kladr-ejb-1.0-SNAPSHOT.jar:main" from Service Module Loader
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
Caused by: java.lang.NoClassDefFoundError: com/linuxense/javadbf/DBFException
    at java.lang.Class.getDeclaredMethods0(Native Method) [rt.jar:1.6.0_37]
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) [rt.jar:1.6.0_37]
    at java.lang.Class.getDeclaredMethods(Class.java:1791) [rt.jar:1.6.0_37]
    at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:65) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:66) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 10 more
Caused by: java.lang.ClassNotFoundException: com.linuxense.javadbf.DBFException from [Module "deployment.kladr.ear.kladr-ejb-1.0-SNAPSHOT.jar:main" from Service Module Loader]
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
    ... 15 more

This library linuxenseis presented in pom.xml. And i does not know what the reason of this error. Here is the part of pom:

该库linuxensepom.xml. 我不知道这个错误的原因是什么。这是pom的部分:

....
  <dependency>
           <groupId>com.linuxense</groupId>
           <artifactId>javadbf</artifactId>
           <version>0.4.0</version>
  </dependency>
....

App is deploying in EAR archive. EAR contains EJB.jar and WEB.war apps (with different names).

应用程序正在 EAR 存档中部署。EAR 包含 EJB.jar 和 WEB.war 应用程序(具有不同的名称)。

What could be the reason of this?

这可能是什么原因?

回答by mthmulders

Your ClassNotFoundExceptionis caused by the linuxense jar not being present in the deployment. Take a look at this questionfor a possible way to work around this.

ClassNotFoundException的原因是部署中不存在 linuxense jar。看看这个问题,寻找解决这个问题的可能方法。