我在这里遇到了一个奇怪的问题,基本上,我将hibernate与gwt、maven和gwt-maven插件一起使用。
但是,hibernate在初始化过程中失败,并显示以下消息:
[ERROR] Initial SessionFactory creation failed.org.hibernate.HibernateException: could not instantiate QueryTranslatorFactory: org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory
谷歌搜索表明,这显然与hibernate.jar两次出现在类路径上有关。
我不完全理解GWT插件是如何配置其类路径的。我尝试将hibernate核心设置为scope->provided,这使得它不包括在包的/lib目录中,但是,它仍然在运行jetty时通过将它放在类路径中?
这是mvn-gwt:run-X 的输出
C:Program FilesJavajdk1.6.0_27jrebinjava -Xmx512m -classpath C:DevelopGit-repositoriesPromoCMSpromocmssrcmanjava;
C:DevelopGit-repositoriesPromoCMSpromocmssrcmainresources;
C:DevelopGit-repositoriesPromoCMSpromocmstargetpromocms-1.0-SNAPSHOTWEB-INFclasses;
C:Userssecretusershyy.m2repositorycomgooglegwtgwt-servlet2.4.0gwt-servet-2.4.0.jar;
C:Userssecretusershyy.m2repositorycomgooglegwtgwt-user2.4.0gwt-user-2.4.0.jar;
C:Userssecretusershyy.mrepositoryorghsqldbhsqldb2.2.6hsqldb-2.2.6.jar;
C:Userssecretusershyy.m2repositoryorghibernatehibernate-core4..1.Finalhibernate-core-4.0.1.Final.jar;
C:Userssecretusershyy.m2repositorycommons-collectionscommons-collections3.2.1commons-collections-3.2.1.jar;
C:Userssecretusershyy.m2repositoryantlrantlr2.7.7antlr-2.7.7.jar;
C:Userssecretusershyy.m2repositoryorgjbossspecjavaxtransactionjboss-transaction-api_1.1_spec1.0.0.Finaljboss-transaction-api_1.1_spc-1.0.0.Final.jar;
C:Userssecretusershyy.m2repositorydom4jdom4j1.6.1dom4j-1.6.1.jar;
C:Userssecretusershyy.m2repositoyxml-apisxml-apis1.0.b2xml-apis-1.0.b2.jar;
C:Userssecretusershyy.m2repositoryorghibernatejavaxpersistencehiberate-jpa-2.0-api1.0.1.Finalhibernate-jpa-2.0-api-1.0.1.Final.jar;
C:Userssecretusershyy.m2repositoryorgjbossloggingboss-logging3.1.0.CR2jboss-logging-3.1.0.CR2.jar;
C:Userssecretusershyy.m2repositoryorgjavassistjavassist3.15.0-GAjavassist-3.15.0-GA.jar;
C:Userssecretusershyy.m2repositoryorghibernatecommonhibernate-commons-annotations4.0.1.Finlhibernate-commons-annotations-4.0.1.Final.jar;
C:Userssecretusershyy.m2repositoryorgslf4jslf4j-api1.6.4slf4j-api-.6.4.jar;
C:Userssecretusershyy.m2repositorylog4jlog4j1.2.16log4j-1.2.16.jar;C:Userssecretusershyy.m2repositorycomgooglegwtgwt-user2.4.0gwt-user-2.4.0.jar;
C:Userssecretusershyy.m2repositoryjavaxvalidationvalidation-api1.0.0.GAvalidation-api-1.0.0.GA.jar;
C:Userssecretusershyy.m2repositoryjavaxvalidationvalidation-api1.0.0.GAvalidation-api-1.0.0.GA-sources.jar;
C:Userssecretusershyy.m2repositorycomgooglegwtgwt-dev2.4.0gwt-dev-2.4.0.jar com.google.gwt.de.DevMode -war C:DevelopGit-repositoriesPromoCMSpromocmstargetpromocms-1.0-SNAPSHOT -gen C:DevelopGit-repositorisPromoCMSpromocmstarget.generated -logLevel INFO -port 8888 -startupUrl PromoCMS.html mrkt.promocms.gwt.PromoCMS
如果有人成功地让GWT、maven和hibernate一起玩得很好,我们将不胜感激。
更新我认为我在这方面走错了路,也就是说,我不认为这是因为类路径上有重复的jar文件。
基本上,我添加了hibernate内核4.0.1作为依赖项,如果我降级到3.6.0,它可以正常工作。
取决于您选择的HQL解析器实现。更改属性名称如下:
<property name="hibernate.query.factory_class">org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory</property>
或
<property name="hibernate.query.factory_class">org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory</property>
看到《Whats’s new?》中的第6点了吗?Hibernate 4.0链接的部分