[解決済み] javax.persistence.Table.indexes() における NoSuchMethodError[Ljavax/persistence/Index
質問
Play Framework アプリケーションを持っていて は はHibernate 4.2.5.Final (これはMaven依存性マネージャを介して取得される)を使用していました。 私はHibernate 4.3.0.Finalにアップグレードすることを決定し、私のアプリケーションを正常に再コンパイルし、それを実行しました。
以下のような例外が発生し、原因を突き止めることができませんでした。 4.2.5 にダウングレードし直したところ、この問題は発生しませんでした。 その後、4.2.5 以降の各 Final リリースで Hibernate をアップグレードしようとしました。 つまり、4.2.5.Finalから4.2.6.Final、4.2.7.Final、そして4.2.8.Finalへ、さらに4.3.Finalにアップグレードしてみました。 4.3.0.Final にアップグレードするまでは、問題は発生しません。
Java のバージョン情報
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
そして例外 :
play.api.UnexpectedException: Unexpected exception[NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:152) ~[play_2.10.jar:2.2.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:112) ~[play_2.10.jar:2.2.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$1.apply(ApplicationProvider.scala:110) ~[play_2.10.jar:2.2.1]
at scala.util.Success.flatMap(Try.scala:200) ~[scala-library.jar:na]
Caused by: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
at org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions(EntityBinder.java:936) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:781) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3762) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3716) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1410) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844) ~[hibernate-core-4.3.0.Final.jar:4.3.0.Final]
どのように解決するのですか?
私も同じ問題に遭遇しました。ここでの問題は、play-java-jpa アーティファクト (build.sbt ファイル内の javaJpa キー) が異なるバージョンの仕様に依存することです。
(version 2.0 -> "org.hibernate.javax.persistence" % "hibernate-jpa-2.0-api" % "1.0.1.Final")
.
hibernate-entitymanager 4.3 を追加すると、より新しい仕様 (2.1) と entitymanager 用の異なるファクトリー プロバイダーがもたらされます。基本的には、クラスパスに両方の jar を推移的依存関係として持つことになります。
build.sbt ファイルをこのように編集すると、play がより新しい API 依存関係のための新しいバージョンの jpa プラグインをリリースするまで、一時的に問題が解決されます。
libraryDependencies ++= Seq(
javaJdbc,
javaJpa.exclude("org.hibernate.javax.persistence", "hibernate-jpa-2.0-api"),
"org.hibernate" % "hibernate-entitymanager" % "4.3.0.Final"
)
これは
play 2.2.x
. 以前のバージョンでは、ビルドファイルに若干の違いがありました。
関連
-
executeQuery()でデータ操作文が発行できない。解決方法
-
強制型変換について
-
無効なメソッド宣言
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
Javaジェネリックを1つの記事で
-
ジャバアレイ
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
コンストラクタDate()が未定義である問題
-
Java基礎 - マッピングとQ/A
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipseは、ポップアップA Java Exception has occurred.を実行し、エラーException in threadの解決策を報告します。
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
executeQuery()でデータ操作文が発行できない。解決方法
-
javaの非静的メソッドを静的に参照することができない
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
-bash: java: コマンドが見つからない 解決方法
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
代入の左辺は変数でなければならない 解答
-
春ブート複数のデータソースの管理(atomikos)同じサーバーホスト上の複数のプロジェクトを開始する複数のJava - jarのエラーソリューション
-
Spring Bootは、Tomcatの組み込みのmaxPostSizeの値を設定します。