我有一个在JBoss AS 4.2.3上运行的应用程序,我正在尝试将其迁移到JBoss AS 7.0.2。我也将接缝从2.1.1升级到2.2.2。我已经解决了一些未找到的类异常,但我坚持
java.lang.ClassNotFoundException: org.hibernate.validator.ClassValidator
我的完整堆栈跟踪如下。
我对AS 7中的新类加载器不太清楚.Hibernate 4是否适用于seam 2.2.2?我已经尝试在jboss-deployment-structure.xml中指定导出以使用org.hibernate和org.hibernate.validator。但是,当我查看这些位置的罐子时,我没有看到ClassValidator类...
我还尝试将Hibernate 3 jar添加到EAR / lib并在清单中指定它们,但这并没有改变任何东西。我看到hibernate 3 hibernate-validator.jar确实包含classValidator类,但它仍然找不到它。
更新我还尝试了hibernate-validator-legacy-4.0.2.GA.jar
hibernate-annotations-3.4.0.GA.jar
hibernate-commons-annotations-3.1.0.GA.jar
hibernate-core-3.3.0.SP1.jar
hibernate-validator-3.1.0.GA.jar
14:16:07,776 INFO [org.jboss.seam.Component] (MSC service thread 1-2) Component: Test, scope: EVENT, type: JAVA_BEAN, class: com.test.Test
14:16:07,789 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/oneSourceUI]] (MSC service thread 1-2) Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener: java.lang.RuntimeException: Could not create Component: Test
at org.jboss.seam.init.Initialization.addComponent(Initialization.java:1202) [jboss-seam.jar:]
at org.jboss.seam.init.Initialization.installComponents(Initialization.java:1118) [jboss-seam.jar:]
at org.jboss.seam.init.Initialization.init(Initialization.java:737) [jboss-seam.jar:]
at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:36) [jboss-seam.jar:]
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3368) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3821) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:70) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [:1.7.0_01]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [:1.7.0_01]
at java.lang.Thread.run(Thread.java:722) [:1.7.0_01]
Caused by: java.lang.NoClassDefFoundError: org/hibernate/validator/ClassValidator
at java.lang.Class.getDeclaredMethods0(Native Method) [:1.7.0_01]
at java.lang.Class.privateGetDeclaredMethods(Class.java:2442) [:1.7.0_01]
at java.lang.Class.getDeclaredMethods(Class.java:1808) [:1.7.0_01]
at org.jboss.seam.Component.initMembers(Component.java:553) [jboss-seam.jar:]
at org.jboss.seam.Component.(Component.java:247) [jboss-seam.jar:]
at org.jboss.seam.Component.(Component.java:208) [jboss-seam.jar:]
at org.jboss.seam.init.Initialization.addComponent(Initialization.java:1186) [jboss-seam.jar:]
... 11 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.validator.ClassValidator from [Module "deployment.test-ear.ear.jboss-seam.jar:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:191)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:361)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:333)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:310)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:103)
... 18 more
14:16:07,798 INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-2) Initializing Mojarra (1.2_15-20110809-SNAPSHOT) for context '/test
14:16:07,828 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (MSC service thread 1-2) JSF1051: Service entry 'org.jboss.as.web.deployment.jsf.JsfInjectionProvider' does not extend DiscoverableInjectionProvider. Entry will be ignored.
14:16:07,829 INFO [javax.enterprise.resource.webcontainer.jsf.application] (MSC service thread 1-2) JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods marked with these annotations will have said annotations processed.
14:16:07,852 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-2) Error listenerStart
14:16:07,854 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-2) Context [/test] startup failed due to previous errors
14:16:07,855 INFO [org.jboss.web] (MSC service thread 1-2) registering web context: /oneSourceUI
14:16:08,101 INFO [org.apache.catalina.core.StandardContext] (MSC service thread 1-1) Container org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/oneSourceUI] has not been started
14:16:08,816 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployment of "test-ear.ear" was rolled back with failure message {"Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"test-ear.ear/test-ejb.jar#testBackout\" missing [ jboss.naming.context.java.testBackoutDatasource ]","jboss.persistenceunit.\"test-ear.ear/test-ejb.jar#test\" missing [ jboss.naming.context.java.testDatasource ]"]}
14:16:08,857 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Stopped deployment test-ejb.jar in 760ms
14:16:08,857 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Stopped deployment jboss-seam.jar in 761ms
14:16:09,613 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Stopped deployment oneSourceUI.war in 1517ms
14:16:09,720 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Stopped deployment oneSourceUI-ear.ear in 1624ms
14:16:09,728 ERROR [org.jboss.as.deployment] (DeploymentScanner-threads - 1) {"Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"test-ear.ear/test-ejb.jar#testBackout\" missing [ jboss.naming.context.java.testBackoutDatasource ]","jboss.persistenceunit.\"test-ear.ear/test-ejb.jar#test\" missing [ jboss.naming.context.java.testDatasource ]"]}}}
答案 0 :(得分:5)
在JBoss 7中更改了类加载模型。它隐藏了许多未明确声明的内容。
你必须熟悉这些链接:
https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7
答案 1 :(得分:3)
1 - 我通过jboss7.1.1中的declare模块解决了这个问题 2 - 修改lib文件夹中的MANIFEST.MF文件
在\ jboss-as-7.1.1.Final \ modules \文件夹中创建此文件夹:
\ jboss-as-7.1.1.Final \模块**有机\休眠\验证\主**
然后我将文件hibernate-validator-4.2.0.Final.jar复制到main \
的文件夹中然后我在主文件夹中创建文件module.xml并通过以下代码修改它:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.hibernate.validator">
<resources>
<resource-root path="hibernate-validator-4.2.0.Final.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.persistence.api"/>
<module name="javax.validation.api"/>
<module name="javax.persistence.api"/>
<module name="javax.xml.bind.api"/>
<module name="org.jboss.logging"/>
<module name="org.jboss.common-core"/>
<module name="org.joda.time"/>
<module name="org.slf4j"/>
<module name="org.apache.xerces" services="import"/>
<module name="sun.jdk" services="import"/>
</dependencies>
</module>
现在,您的模块是在jboss模块中创建的。
看看这一行:
<module xmlns="urn:jboss:module:1.1" name="org.hibernate.validator">
你必须在MANIFEST.MF文件的Dependencies部分中使用org.hibernate.validator,如下所示:
Manifest-Version: 1.0
Implementation-Vendor: Sahand Samaneh
Implementation-Title: Sahand System Security Product
Implementation-Version: 5.0.0-SNAPSHOT
Implementation-Vendor-Id: com.sahand.product
Built-By: pooladi.morteza
Build-Jdk: 1.6.0_21
Created-By: Apache Maven 3.0.4
Archiver-Version: Plexus Archiver
Dependencies: com.sahand.common.util,com.sahand.common.security,com.sahand.model.common,com.sahand.model.user.management,com.sahand.model.security,com.sahand.security.api,com.sahand.security.persistence,com.sahand.security.service,org.apache.commons.codec,org.slf4j,ch.qos.logback.core,ch.qos.logback.classic,javax.validation.api,org.hibernate.validator
然后你的问题必须通过:D
如果你收到ClassNotFoundException的任何消息,你必须声明jboss模块并在你的MANIFEST.MF文件中使用它的名称。
:d
答案 2 :(得分:-1)
将这个放在persistence.xml中对我有用:
property name="javax.persistence.validation.mode" value="none"