NoSuchMethodError dalam javax.persistence.Table.indexes()[Ljavax/persistence/Index
Dalam aplikasi Rangka Kerja Play, naik taraf daripada Hibernate 4.2.5.Akhir hingga 4.3.0.Akhir boleh membawa kepada a Pengecualian "NoSuchMethodError" berkenaan javax.persistence.Table.indexes().
Punca:
Isu ini berpunca daripada konflik pergantungan antara artifak play-java-jpa dan artifak hibernate-entitymanager. Artifak play-java-jpa bergantung pada versi API kegigihan (versi 2.0) yang berbeza daripada artifak hibernate-entitymanager (versi 2.1). Apabila kedua-dua artifak hadir dalam laluan kelas, definisi API yang lebih baharu diutamakan, menyebabkan kaedah javax.persistence.Table.indexes() tidak ditentukan.
Penyelesaian:
Untuk menyelesaikan isu ini, edit fail build.sbt anda dan kecualikan kebergantungan hibernate-jpa-2.0-api daripada artifak play-java-jpa. Konfigurasi pergantungan yang dikemas kini sepatutnya kelihatan seperti ini:
libraryDependencies ++= Seq( javaJdbc, javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"), "org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final" )
Konfigurasi ini memastikan bahawa laluan kelas hanya mengandungi definisi API daripada versi yang lebih baharu (2.1) dan mengelakkan konflik definisi kaedah.
Untuk Play 2.2.x:
Konfigurasi fail build.sbt yang disediakan di atas direka untuk Play 2.2.x. Untuk versi Play yang lebih awal, mungkin terdapat perbezaan dalam konfigurasi fail binaan. Rujuk dokumentasi Play untuk mendapatkan maklumat lanjut tentang mengkonfigurasi kebergantungan dalam versi Play yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan NoSuchMethodError dalam javax.persistence.Table.indexes() Selepas Menaik taraf Hibernate dalam Aplikasi Rangka Kerja Play?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!