2017-08-12 53 views
0

我写我的第一个Hibernate项目完全一样一样的我的老师没有,但我得到这个异常:java.lang.NoSuchMethodError:javax.persistence.Table.indexes()[Ljavax/persistence/Index;

> Exception in thread "main" java.lang.ExceptionInInitializerError 
> Caused by: javax.persistence.PersistenceException: No Persistence 
> provider for EntityManager named Sharif: Provider named 
> org.hibernate.jpa.HibernatePersistenceProvider threw unexpected 
> exception at create EntityManagerFactory: java.lang.NoSuchMethodError 
> java.lang.NoSuchMethodError: 
> javax.persistence.Table.indexes()[Ljavax/persistence/Index; 

,我在persistence.xml文件中写道持久性单元名称

<persistence-unit name="Sharif" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

,我也在我的实体类中使用实体注释(Person) 我检查几乎所有与我的问题有关的问题,但我无法解决它。 项目依赖:
enter image description here

+0

[没有提供给EntityManager的持久性提供者的可能的副本](https://stackoverflow.com/questions/1158159/no-persistence-provider-for-entitymanager-named) – Jakob

+0

错误消息说'Provider named > org .hibernate.jpa.HibernatePersistenceProvider抛出意外的';这导致我相信提供者被正确地指定了,并且问题在其他地方。 我敢打赌,你的类路径中存在冲突的hibernate/jpa提供者版本。你可以显示你所有的项目依赖项列表吗? – Andrei

+0

@Jakob,这不是你提到的问题的重复。至多,我认为这是一个重复/轻微变化的这一个: https://stackoverflow.com/questions/20734540/nosuchmethoderror-in-javax-persistence-table-indexesljavax-persistence-index 如果你看看错误消息您会看到它正确检测到指定的提供程序;该消息有点误导。 – Andrei

回答

0

我创建了一个新的项目,并复制我的代码在里面。我想我的问题是因为现有的2版本hibernate-core.jar,这个文件hibernate-core-5.2.10.Final.jarhibernate-core-5.2.1.Final.jar。我删除了额外的jar文件,并将新的lib文件夹复制到新项目中并成功运行。