如何修复 javax.persistence.Table.indexes()[Ljavax/persistence/Index?
How to fix javax.persistence.Table.indexes()[Ljavax/persistence/Index?
我正在用 JSF 开发应用程序。
错误是:
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:1087)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:767)
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:245)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.processEntityHierarchies(MetadataBuildingProcess.java:222)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at w7h5.h8.sf.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:26)
at w7h5.h8.transaction.TransactionalModule.invoke(TransactionalModule.java:29)
at abrain.web.common.bean.EditorView.test_post(EditorView.java:112)
at abrain.web.common.bean.EditorView.setText(EditorView.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.el.BeanELResolver.setValue(BeanELResolver.java:122)
... 43 more
这个应用程序就像一个社交网络,当我想保存一个新的 Post 时会出现这个错误。
提供该功能的方法是:
public void test_post(String testo, String username){
W7H5 w7db = W7DBS.getInstance();
Post post=new Post();
Timestamp data=new Timestamp(System.currentTimeMillis());
UtentiSocial creatore=new UtentiSocial();
creatore.setUsername(username);
post.setCreatore(creatore);
post.setTesto(testo);
post.setDatacreazione(data);
post.setCancellato(false);
w7db.savePost(post);
System.out.println("eseguito: " + "testo: "+ testo + "username " + username + "data " + data);
}
我已经尝试创建一个 java class 测试以防止未通过思考 Tomcat(版本 8.5)并且一切正常,所以当我 运行 服务器上的应用程序。
我正在使用:
- hibernate-commons-annotations-5.0.1.Final.jar
- hibernate-core-5.1.0.Final.jar
- hibernate-jpa-2.1-api-1.0.0.Final.jar
- hibernate-spatial-5.1.0.Final.jar
- hibernate-validator-5.2.4.Final.jar
和
- java版本“1.8.0_31”
- Java(TM) SE 运行时环境(build 1.8.0_31-b13)
- Java HotSpot(TM) 64 位服务器虚拟机(内部版本 25.31-b07,混合模式)
第一张图片是javax.persistence.jar
接口Table的源代码。如您所见,没有方法 indexes()
.
第二张图是jpa-2.1.jar
接口Table的源代码。并且存在方法 indexes()
。
在我看来,您的类路径中可能有两个 jar,这会造成冲突。
当您调用 javax.persistence.Table
时,我们不知道它是来自 javax.persistence.jar 还是 jpa-2.1.jar.
的接口
查看您的类路径并删除 javaxpersistence.jar,然后重试。
我正在用 JSF 开发应用程序。 错误是:
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:1087)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:767)
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:245)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.processEntityHierarchies(MetadataBuildingProcess.java:222)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:692)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724)
at w7h5.h8.sf.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:26)
at w7h5.h8.transaction.TransactionalModule.invoke(TransactionalModule.java:29)
at abrain.web.common.bean.EditorView.test_post(EditorView.java:112)
at abrain.web.common.bean.EditorView.setText(EditorView.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at javax.el.BeanELResolver.setValue(BeanELResolver.java:122)
... 43 more
这个应用程序就像一个社交网络,当我想保存一个新的 Post 时会出现这个错误。 提供该功能的方法是:
public void test_post(String testo, String username){
W7H5 w7db = W7DBS.getInstance();
Post post=new Post();
Timestamp data=new Timestamp(System.currentTimeMillis());
UtentiSocial creatore=new UtentiSocial();
creatore.setUsername(username);
post.setCreatore(creatore);
post.setTesto(testo);
post.setDatacreazione(data);
post.setCancellato(false);
w7db.savePost(post);
System.out.println("eseguito: " + "testo: "+ testo + "username " + username + "data " + data);
}
我已经尝试创建一个 java class 测试以防止未通过思考 Tomcat(版本 8.5)并且一切正常,所以当我 运行 服务器上的应用程序。
我正在使用:
- hibernate-commons-annotations-5.0.1.Final.jar
- hibernate-core-5.1.0.Final.jar
- hibernate-jpa-2.1-api-1.0.0.Final.jar
- hibernate-spatial-5.1.0.Final.jar
- hibernate-validator-5.2.4.Final.jar
和
- java版本“1.8.0_31”
- Java(TM) SE 运行时环境(build 1.8.0_31-b13)
- Java HotSpot(TM) 64 位服务器虚拟机(内部版本 25.31-b07,混合模式)
第一张图片是javax.persistence.jar
接口Table的源代码。如您所见,没有方法 indexes()
.
第二张图是jpa-2.1.jar
接口Table的源代码。并且存在方法 indexes()
。
在我看来,您的类路径中可能有两个 jar,这会造成冲突。
当您调用 javax.persistence.Table
时,我们不知道它是来自 javax.persistence.jar 还是 jpa-2.1.jar.
查看您的类路径并删除 javaxpersistence.jar,然后重试。