2014-04-08 27 views
1

我想部署包含4個項目的ear文件3個war和一個.jar這個jar項目在這個jar項目中使用spring和hibernate是常見的。且戰項目使用Struts當我使用JTA,但沒能找到什麼錯誤讓這些錯誤在jboss中部署era文件時出錯

15:11:51,929 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC00001: Failed to start service jboss.persistenceunit."EyewatchEar.ear#EW": org.jboss.msc.service.StartException in service jboss.persistenceunit."EyewatchEar.ear#EW": Failed to start service 
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45] 
    at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45] 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: EW] Unable to build EntityManagerFactory 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889) 
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:162) 
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85) 
    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] 
    ... 3 more 
Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.collection.OneToManyPersister 
    at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:248) 
    at org.hibernate.persister.internal.PersisterFactoryImpl.createCollectionPersister(PersisterFactoryImpl.java:196) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:375) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737) 
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:84) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:904) 
    ... 9 more 
Caused by: org.hibernate.HibernateException: Unable to parse order-by fragment 
    at org.hibernate.sql.ordering.antlr.OrderByFragmentTranslator.render(OrderByFragmentTranslator.java:66) 
    at org.hibernate.sql.Template.renderOrderByStringTemplate(Template.java:696) 
    at org.hibernate.persister.collection.AbstractCollectionPersister.<init>(AbstractCollectionPersister.java:558) 
    at org.hibernate.persister.collection.OneToManyPersister.<init>(OneToManyPersister.java:85) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.7.0_45] 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) [rt.jar:1.7.0_45] 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.7.0_45] 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) [rt.jar:1.7.0_45] 
    at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:226) 
    ... 14 more 
Caused by: java.lang.ClassCastException: antlr.CommonToken cannot be cast to antlr.Token 
    at antlr.CharScanner.makeToken(CharScanner.java:173) 
    at org.hibernate.sql.ordering.antlr.GeneratedOrderByLexer.mIDENT(GeneratedOrderByLexer.java:238) 
    at org.hibernate.sql.ordering.antlr.GeneratedOrderByLexer.nextToken(GeneratedOrderByLexer.java:138) 
    at antlr.TokenBuffer.fill(TokenBuffer.java:69) 
    at antlr.TokenBuffer.LA(TokenBuffer.java:80) 
    at antlr.LLkParser.LA(LLkParser.java:52) 
    at org.hibernate.sql.ordering.antlr.GeneratedOrderByFragmentParser.expression(GeneratedOrderByFragmentParser.java:504) 
    at org.hibernate.sql.ordering.antlr.GeneratedOrderByFragmentParser.sortKey(GeneratedOrderByFragmentParser.java:325) 
    at org.hibernate.sql.ordering.antlr.GeneratedOrderByFragmentParser.sortSpecification(GeneratedOrderByFragmentParser.java:241) 
    at org.hibernate.sql.ordering.antlr.GeneratedOrderByFragmentParser.orderByFragment(GeneratedOrderByFragmentParser.java:190) 
    at org.hibernate.sql.ordering.antlr.OrderByFragmentTranslator.render(OrderByFragmentTranslator.java:60) 
    ... 22 more 

JBoss的7部署,因此,如果有人有解決方案,請幫助。

感謝Adv。

+0

你是否包括Hibernate和/或在部署ANTLR? –

回答

0

我也在使用JBoss AS7和Hibernate。這個錯誤在我用@OrderBy註釋我的一個實體類字段之後開始出現

解決方法是刪除antlr和/或hibernate,如James在他的評論中所建議的,並讓JBoss找到這些依賴關係(它們被與JBoss)。

如果您使用的是Maven,並且對antlr或hibernate有編譯時的依賴關係,您應該在任何一個依賴關係中添加<scope>provided</scope>來編譯但不包含在您的jar文件中。

3

你可能找到了一個解決方案,但以供​​將來參考,這裏使用Maven一個有效的解決方案:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>${hibernate-version}</version> 

    <exclusions> 
     <exclusion> 
      <groupId>antlr</groupId> 
      <artifactId>antlr</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency>