NoClassDefFoundError with PersistenceUnit in EAP 6.1.0 alpha and AS 7.2
daniel.wehrle Apr 10, 2013 10:02 AMHi,
i try to migrate our application from AS 7.1.1 to EAP 6.1.0 alpha on Windows.
In deployment I get a NoClassDefFoundError (EAP 6.1.0 alpha and AS 7.2.0). With each deployment an other class is not found. If i move the mc-Package from the ejb.jar to the lib-Dir, classes are found. In this stacktrace class AssetThumbPanel is not annotated as @Entity.
Stacktrace:
15:23:54,042 INFO [org.hibernate.ejb.Ejb3Configuration] (ServerService Thread Pool -- 60) HHH000204: Processing PersistenceUnitInfo [
name: mc
...]
15:24:10,136 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 60) MSC00001: Failed to start service jboss.persistenceunit."mc.ear/ejb.jar#mc": org.jboss.msc.service.StartException in service jboss.persistenceunit."mc.ear/ejb.jar#mc": java.lang.NoClassDefFoundError: mc/portal/page/asset/list/AssetThumbPanel
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:103)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_15]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_15]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_15]
at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.0.Final.jar:2.1.0.Final]
Caused by: java.lang.NoClassDefFoundError: mc/portal/page/asset/list/AssetThumbPanel
at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_15]
at java.lang.ClassLoader.defineClass(ClassLoader.java:791) [rt.jar:1.7.0_15]
at java.lang.ClassLoader.defineClass(ClassLoader.java:634) [rt.jar:1.7.0_15]
at org.jboss.as.jpa.classloader.TempClassLoader.findClass(TempClassLoader.java:79)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.as.jpa.hibernate4.HibernateAnnotationScanner.getPackagesInJar(HibernateAnnotationScanner.java:171)
at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:490)
at org.hibernate.ejb.Ejb3Configuration.scanForClasses(Ejb3Configuration.java:852)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:591)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:200)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$600(PersistenceUnitServiceImpl.java:57)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:99)
... 4 more
Caused by: java.lang.ClassNotFoundException: mc.portal.page.asset.list.AssetThumbPanel
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:450) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398) [jboss-modules.jar:1.2.0.CR1]
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120) [jboss-modules.jar:1.2.0.CR1]
... 20 more
Deployment structure of ear:
mc.ear
+-ejb.jar
| + mc-Package
| + META-INF
| + persistence.xml
+ lib
+ META-INF
| + application.xml
| + jboss-deployment-structure.xml
+ web.war
persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="mc">
<jta-data-source>java:/mcDS_core</jta-data-source>
<jar-file>ejb.jar</jar-file>
<properties>
<property name="hibernate.hbm2ddl.auto" value="none"/>
<property name="hibernate.dialect" value="mc.core.system.util.db.SQLServerDialect"/>
<property name="hibernate.show_sql" value="false"/>
<!-- to support legacy @GeneratedValue for @Id -->
<property name="hibernate.id.new_generator_mappings" value="false"/>
<!-- JB7 uses infinispan cache, bound to "java:jboss/infinispan/container/hibernate" in JNDI -->
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<!-- automatically optimize index after n operations or transactions -->
<property name="hibernate.search.default.optimizer.operation_limit.max" value="10000"/>
<property name="hibernate.search.default.optimizer.transaction_limit.max" value="1000"/>
<property name="hibernate.search.default.directory_provider" value="mc.core.system.ftindex.FtiDirectoryProvider"/>
<!-- JB7 does not register EM in JNDI, only EMF -->
<property name="jboss.entity.manager.jndi.name" value="java:jboss/EntityManagers/mc"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:jboss/EntityManagerFactories/mc"/>
</properties>
</persistence-unit>
</persistence>
application.xml:
<?xml version="1.0" encoding="UTF-8"?>
<application>
<display-name>mc</display-name>
<module>
<ejb>ejb.jar</ejb>
</module>
<module>
<web>
<web-uri>web.war</web-uri>
<context-root>mc</context-root>
</web>
</module>
</application>
jboss-deployment-structure.xml:
<jboss-deployment-structure>
<ear-subdeployments-isolated>false</ear-subdeployments-isolated>
<deployment>
<dependencies>
<!-- mc compile time dependencies -->
<module name="org.apache.commons.beanutils" />
<module name="org.apache.commons.io" />
<module name="org.infinispan" />
<module name="org.jboss.logmanager" />
<!-- hibernate search runtime dependencies -->
<module name="org.codehaus.jackson.jackson-core-asl" />
<module name="org.codehaus.jackson.jackson-mapper-asl" />
<module name="org.hibernate.commons-annotations" />
<!-- jsontools runtime dependencies -->
<module name="org.antlr" />
<!-- milton (webdav) runtime dependencies -->
<module name="org.jdom" />
<module name="org.slf4j" />
<module name="org.apache.commons.codec" />
<!-- poi runtime dependencies -->
<module name="org.dom4j" />
<!-- tika runtime dependencies -->
<module name="asm.asm" />
<!-- runtime dependencies from various jars -->
<!-- check if and why needed
<module name="org.apache.log4j" />
<module name="org.apache.commons.logging" /> -->
</dependencies>
</deployment>
<!-- we have to repeat dependencies for sub-deployments. see https://issues.jboss.org/browse/AS7-3955 -->
<sub-deployment name="ejb.jar">
<dependencies>
<module name="org.apache.commons.beanutils" />
<module name="org.apache.commons.io" />
<module name="org.infinispan" />
<module name="org.jboss.logmanager" />
<module name="org.codehaus.jackson.jackson-core-asl" />
<module name="org.codehaus.jackson.jackson-mapper-asl" />
<module name="org.hibernate.commons-annotations" />
<module name="org.antlr" />
<module name="org.jdom" />
<module name="org.slf4j" />
<module name="org.apache.commons.codec" />
<module name="org.dom4j" />
<module name="asm.asm" />
</dependencies>
</sub-deployment>
<sub-deployment name="web.war">
<dependencies>
<module name="org.apache.commons.beanutils" />
<module name="org.apache.commons.io" />
<module name="org.infinispan" />
<module name="org.jboss.logmanager" />
<module name="org.codehaus.jackson.jackson-core-asl" />
<module name="org.codehaus.jackson.jackson-mapper-asl" />
<module name="org.antlr" />
<module name="org.jdom" />
<module name="org.slf4j" />
<module name="org.apache.commons.codec" />
<module name="org.dom4j" />
<module name="asm.asm" />
</dependencies>
</sub-deployment>
</jboss-deployment-structure>