JBoss AS 7 迁移 - 部署失败问题

4

当我在JBoss AS 7中部署我的工作war文件时,出现以下异常:

11:59:11,090 警告 [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015893: 遇到无效的类名 'com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderProviders$StringConstructor',服务类型为 'com.sun.jersey.spi.StringReaderProvider' 11:59:11,091 警告 [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015893: 遇到无效的类名 'com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderProviders$DateProvider',服务类型为 'com.sun.jersey.spi.StringReaderProvider' 11:59:11,092 警告 [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015893: 遇到无效的类名 'com.sun.jersey.server.impl.model.parameter.multivalued.JAXBStringReaderProviders$RootElementProvider',服务类型为 'com.sun.jersey.spi.StringReaderProvider' 11:59:11,923 错误 [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC00001: 服务 jboss.deployment.unit."myimpl.war".POST_MODULE 启动失败:org.jboss.msc.service.StartException in service jboss.deployment.unit."myimpl.war".POST_MODULE: Failed to process phase POST_MODULE of deployment "myimpl.war" 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.NoClassDefFoundError: org/hibernate/exception/ConstraintViolationException at java.lang.Class.getDeclaredConstructors0(Native Method) [rt.jar:1.6.0_37] at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) [rt.jar:1.6.0_37] at java.lang.Class.getConstructor0(Class.java:2699) [rt.jar:1.6.0_37] at java.lang.Class.getConstructor(Class.java:1657) [rt.jar:1.6.0_37] at org.jboss.as.web.deployment.jsf.JsfManagedBeanProcessor.deploy(JsfManagedBeanProcessor.java:108) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final] ... 5 more Caused by: java.lang.ClassNotFoundException: org.hibernate.exception.ConstraintViolationException from [Module "deployment.myimpl.war:main" from Service Module Loader] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.1.1.GA] at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.1.1.GA] at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.1.1.GA] at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423) [jboss-modules.jar:1.1.1.GA] at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.1.1.GA] at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.1.1.GA] ... 11 more 11:59:11,938 信息 [org.jboss.as] (MSC service thread 1-7
我认为默认情况下,JBoss AS 7支持在启动时将Hibernate jars添加到类路径中(因为Hibernate模块已经可用于JBoss AS7)。我在hibernate-core-4.0.1.Final.jar(位于“modules \ org \ hibernate \ main”文件夹结构下)中找到了ConstraintViolationException类。那么为什么会出现NoClassDefFoundError错误?
请注意,我没有使用Maven进行依赖项解析。对于依赖项解析,我手动将jar文件放入了myimpl.war \ WEB-INF \ lib中。
无论如何,我在WEB-INF \ lib目录中添加了Hibernate的jar文件(hibernate3.jar)之后,出现了一些新的异常,看起来像是这样的:
12:51:19,146错误[org.jboss.msc.service.fail](MSC服务线程1-6):MSC00001:启动服务jboss.deployment.unit."myimpl.war".POST_MODULE失败:在部署“myimpl.war”的POST_MODULE阶段处理失败
    在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    在org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1811)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    在org.jboss.msc.service.ServiceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1746)[jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    在java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)[rt.jar:1.6.0_37]
    在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)[rt.jar:1.6.0_37]
    在java.lang.Thread.run(Thread.java:662)[rt.jar:1.6.0_37]
由org.jboss.as.server.deployment.DeploymentUnitProcessingException引起:JBAS011232:只允许一个JAX-RS应用程序类。 com.sun.jersey.api.core.WebAppResourceConfig com.sun.jersey.api.core.ResourceConfig com.sun.jersey.api.core.ClassNamesResourceConfig com.sun.jersey.api.core.ScanningResourceConfig com.sun.jersey.api.core.ClasspathResourceConfig com.sun.jersey.api.core.DefaultResourceConfig com.sun.jersey.api.core.PackagesResourceConfig com.sun.jersey.server.impl.application.DeferredResourceConfig com.sun.jersey.api.core.ApplicationAdapter
    在org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scan(JaxrsScanningProcessor.java:209)
    在org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.deploy(JaxrsScanningProcessor.java:105)
    在org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113)[jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 more

请简要介绍如何解决此问题。


你可以在此链接中的WEB-INF/lib文件夹中找到JAR包。 - Anish Antony
4个回答

1
我同意Sankar的观点,在JBoss提供的Hibernate模块上添加显式依赖关系。另一种添加依赖关系的方法是通过META-INF下的MANIFEST文件。
以下链接是有关JBoss类加载和依赖项的好文章。希望它能帮助你。

http://www.mastertheboss.com/jboss-as-7/jboss-as-7-classloading


1

您需要在jboss部署结构的xml文件中添加hibernate jars的依赖项。尝试一下并让我知道结果。


我将我的依赖项添加到了WEB-INF/lib目录中,你可以在此链接的lib目录中找到这些jar包。实际上,我没有在jboss-deployment-sturcture.xml文件中添加任何依赖项。 - Anish Antony

1

通过从standalone.xml中删除以下两行代码,解决了org.jboss.as.server.deployment.DeploymentUnitProcessingException的问题。



    <extension module="org.jboss.as.jaxrs"/>
    <subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>


此外,hibernate NoClassDefFoundError是由于hibernate jar版本问题引起的。在war文件中使用hibernate3.jar,在JBoss AS7的hibernate模块目录中包含hibernate 4.0.1版本。


1

也要检查类路径

Issue-java.lang.NoClassDefFoundError

问题根源:环境变量设置中Java路径不正确

解决方案:设置正确的JAVA_HOME路径

步骤→环境变量设置(我的电脑-右键点击-〉属性-〉环境变量-〉高级选项卡-〉变量)

创建新的JAVA_HOME环境变量。

JAVA_HOME .;C:\Program Files (x86)\Java\jdk1.6.0_14

在PATH变量部分设置JAVA_HOME变量。

PATH %JAVA_HOME%\bin

在CLASSPATH变量中设置JAVA_HOME变量。

CLASSPATH %JAVA_HOME%\jre\lib

重新启动系统

验证所有变量

echo %CLASSPATH%

echo %JAVA_HOME%

echo %PATH%

编译和运行程序


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接