3

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

11:59:11,090 WARN [org.jboss.as.server.deployment](MSC 服务线程 1-6)JBAS015893:遇到无效的类名 'com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderProviders$服务类型 'com.sun.jersey.spi.StringReaderProvider' 的 StringConstructor'
11:59:11,091 WARN [org.jboss.as.server.deployment](MSC 服务线程 1-6)JBAS015893:遇到无效的类名 'com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderProviders$服务类型 'com.sun.jersey.spi.StringReaderProvider' 的 DateProvider'
11:59:11,092 WARN [org.jboss.as.server.deployment](MSC 服务线程 1-6)JBAS015893:遇到无效的类名 'com.sun.jersey.server.impl.model.parameter.multivalued.JAXBStringReaderProviders$服务类型 'com.sun.jersey.spi.StringReaderProvider' 的 RootElementProvider'
11:59:11,923 错误 [org.jboss.msc.service.fail](MSC 服务线程 1-5)MSC00001:无法启动服务 jboss.deployment.unit。“myimpl.war”.POST_MODULE:org.jboss.msc服务 jboss.deployment.unit."myimpl.war".POST_MODULE 中的 .service.StartException:无法处理部署“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]
引起:java.lang.NoClassDefFoundError: org/hibernate/exception/ConstraintViolationException
    在 java.lang.Class.getDeclaredConstructors0(Native Method) [rt.jar:1.6.0_37]
    在 java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) [rt.jar:1.6.0_37]
    在 java.lang.Class.getConstructor0(Class.java:2699) [rt.jar:1.6.0_37]
    在 java.lang.Class.getConstructor(Class.java:1657) [rt.jar:1.6.0_37]
    在 org.jboss.as.web.deployment.jsf.JsfManagedBeanProcessor.deploy(JsfManagedBeanProcessor.java:108)
    在 org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 更多
引起:java.lang.ClassNotFoundException: org.hibernate.exception.ConstraintViolationException from [Module "deployment.myimpl.war:main" from Service Module Loader]
    在 org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190) [jboss-modules.jar:1.1.1.GA]
    在 org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.1.1.GA]
    在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.1.1.GA]
    在 org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423) [jboss-modules.jar:1.1.1.GA]
    在 org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.1.1.GA]
    在 org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.1.1.GA]
    ... 11 更多

11:59:11,938 INFO [org.jboss.as](MSC 服务线程 1-7)JBAS015951:管理控制台监听 http://127.0.0.1:9990
11:59:11,938 错误 [org.jboss.as](MSC 服务线程 1-7)JBAS015875:JBoss AS 7.1.1.Final “Brontes”在 72380 毫秒内启动(有错误) - 启动了 1548 个服务中的 1402 个(1 个服务失败或缺少依赖项,136 个服务是被动的或按需的)
11:59:11,939 INFO [org.jboss.as.server](DeploymentScanner-threads - 2)JBAS015870:部署“myimpl.war”的部署已回滚并显示失败消息 {“JBAS014671:失败的服务”=> {“jboss .deployment.unit.\"myimpl.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"myimpl.war\".POST_MODULE: 无法处理阶段 POST_MODULE部署 \"myimpl.war\""}}
11:59:12,036 INFO [org.jboss.as.server.deployment](MSC 服务线程 1-5)JBAS015877:在 95 毫秒内停止部署 myimpl.war
11:59:12,038 INFO [org.jboss.as.controller](DeploymentScanner-threads - 2)JBAS014774:服务状态报告
JBAS014777:无法启动的服务:服务 jboss.deployment.unit."myimpl.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."myimpl.war".POST_MODULE: 无法部署“myimpl.war”的处理阶段 POST_MODULE

11:59:12,040 错误 [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: 复合操作失败并已回滚。失败的步骤:" => {"操作步骤- 2" => {"JBAS014671: 失败的服务" => {"jboss.deployment.unit.\"myimpl.war\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit .\"myimpl.war\".POST_MODULE: 无法处理部署的阶段 POST_MODULE \"myimpl.war\""}}}}

我认为默认情况下 JBoss AS 7 支持在启动时将休眠 jar 添加到类路径中(因为休眠模块已经在 J​​Boss AS7 中可用)。我在 hibernate-core-4.0.1.Final.jar 下找到了ConstraintViolationException类(在 'modules\org\hibernate\main' 文件夹结构下)。那么为什么会发生这个NoClassDefFoundError呢?

请注意,我没有使用 maven 来解决依赖关系。为了解决依赖关系,我手动将 jar 文件放入 myimpl.war\WEB-INF\lib

无论如何,在出现一些新异常之后,我在 WEB-INF\lib 目录中添加了休眠的 jar (hibernate3.jar),如下所示

12:51:19,146 错误 [org.jboss.msc.service.fail](MSC 服务线程 1-6)MSC00001:无法启动服务 jboss.deployment.unit."myimpl.war".POST_MODULE: org.jboss.msc服务 jboss.deployment.unit."myimpl.war".POST_MODULE 中的 .service.StartException:无法处理部署“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。应用适配器
    在 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 更多

请给我一个关于如何解决这个问题的简要想法

4

4 回答 4

1

您必须在 jboss 部署结构 xml 文件中添加 hibernate jar 的依赖项。尝试一下,让我知道结果

于 2013-10-01T11:36:08.687 回答
1

通过从stanalone.xml 中 org.jboss.as.server.deployment.DeploymentUnitProcessingException删除以下两行来解决



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


hibernateNoClassDefFoundError也是由于hibernate jar版本问题。在我使用 hibernate3.jar 的 war 文件和包含 hibernate 4.0.1 版本的 JBoss AS7 的 hibernate 模块目录上

于 2013-10-01T16:42:06.707 回答
1

也检查类路径

问题-java.lang.NoClassDefFoundError

根本原因:环境变量部分中设置的 Java 路径不正确

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

Steps->Environment Variable Setting(我的Comp-右键->Properties->Env Variable->Advance Tab->Variable)

创建新的 JAVA_HOME 环境变量。

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

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

路径 %JAVA_HOME%\bin

在 CLASSPATH 变量中设置 JAVA_HOME 变量

类路径 %JAVA_HOME%\jre\lib

重启系统

验证所有变量

回声 %CLASSPATH%

回显 %JAVA_HOME%

回显 %PATH%

编译并运行程序

于 2013-10-03T10:29:13.130 回答
1

我同意 sankar 为 jboss 提供的休眠模块添加显式依赖。添加依赖项的其他方法是通过 META-INF 下的 MANIFEST 文件。

下面的链接是关于 Jboss 类加载和依赖关系的好文章。希望能帮助到你。

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

于 2014-04-22T22:11:00.323 回答