1

Hibernate Tools を使用して Oracle データベースをリバース エンジニアリングしようとしています。ただし、そうしようとすると、次のエラーが発生します。

Received a NoClassDefFoundError, propably the console configuration classpath is
incomplete or contains conflicting versions of the same class.
java.lang.NoClassDefFoundError: Could not initialize org.hibernate.tool.version

Hibernate Tools Jar と通常の Hibernate Jar の間の競合が原因で、このようなことが起こる可能性があることを読みました。Maven-Import を削除し、Hibernate-Jar を手動で追加しました (ソリューションで説明されているようなコア jar のみ)。ツール構成の Hibernate バージョンを 4.0 に設定し、現在の Hibernate 4.1.7 を使用しました
Development Milestone 4.0.0 of Hibernate ToolsHibernate 4.0.0-Core-Jar も試しましたが、すべての組み合わせで同じエラーが発生しました。
ああ、私は STS 3.1.0 を使用しています (ただし、そうではないと思います)。

ヒント/提案をいただければ幸いです。

4

3 に答える 3

1

OK、エラーが見つかりました: さまざまなバージョンを試したところ、最終的に hibernate-annotations-3.5.6 が機能しました。エラーを生成した奇妙な組み合わせだったに違いありません。とにかく答えてくれてありがとう。

于 2012-11-28T20:28:58.840 に答える
0

hibernate-tools プラグイン自体の jar と明らかに競合していたいくつかの hibernate 3.6 jar を削除することが問題でした。

私が得たエラーを取得せずにデータベーステーブルを正常にリバースエンジニアリングするために必要なことは次のとおりです。

プロジェクトのビルド パスには hibernate3.jar と jdbc ドライバー (postgresql-9.0-blabla.jar) のみを含める必要があり、その他 (antlr、dom4j、slf4j、jta など) は削除する必要があります。JPAモードでリバースエンジニアリングを試みたことはありませんが、プロジェクトのビルドパスにhinernate-jpa-2.0-api-blabla.jarを保持する必要があると思います。

hibernate-tools プラグインの使用が終了したら、他の jar を含める必要があります。そうしないと、休止状態のコードが機能しないためです (まだテストしていないと思いますが、3.6 のドキュメントにそう書かれている場合は...)。

于 2012-11-28T18:36:16.843 に答える
0

WSDL の新しいバージョンを持つ Web サービスに対して cxf で生成された Java スタブを使用すると、まったく異なるコンテキストで同じエラーが発生しました。その場合、SOAP 応答には、CXF (または他の何か) が試行する xml 要素が含まれている可能性があります。 Java クラス/オブジェクトにシリアライズし、SOAP 応答の新しい要素に対応する Java クラスがどこにも見つからない場合に、このエラーをスローすることがあります。

この話の教訓として、使用している Java クライアント (スタブを含む jar のセット) のバージョンがサービス プロバイダーと互換性があることを確認してください。

于 2012-11-28T18:37:33.347 に答える