0

私は JSR 303 (Bean 検証) を使用する mavenized プロジェクトを持っています。リファレンス実装として、Hibernate-validator を使用します。プロジェクトでは、依存関係を指定しました:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.1.0.Final</version>
    <scope>provided</scope>
</dependency>

バージョン 4.1.0 では、すべて正常に動作します。しかし、4.2.0に変更すると. 次の行で実行時エラーが発生します。

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

java.lang.ClassFormatError: クラス ファイル javax/persistence/Persistence のネイティブまたは抽象ではないメソッドにコード属性がありません

......//さらにスタックトレース

java.lang.NoClassDefFoundError: クラス com.andr.myproject.services.utils.ValidationUtils を初期化できませんでした

問題はどこですか?

UPD: また、6 ではなく Java-ee-5 依存関係を使用します。

UPD2: このエラーは JUnit テストで発生します

4

2 に答える 2

1

プロジェクトに次の依存関係がありますか?

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-api</artifactId>
    <version>6.0</version>
</dependency>

その場合、このJARはコンパイルにのみ使用でき、実行時には使用できないため、実行時のクラスパスから必ず除外する必要があります(クラスは変更されているため、メソッドの実装は含まれていません)。代わりに、JBossが提供するAPIJARを使用できます。

<dependency>
    <groupId>org.jboss.spec</groupId>
    <artifactId>jboss-javaee-6.0</artifactId>
    <version>1.0.0.Final</version>
    <type>pom</type>
    <scope>provided</scope>
</dependency>

Hibernate Coreを追加すると、JPAAPIが別のJARに取り込まれるため役立つ可能性があります。詳細については、こちらをご覧ください。

于 2013-02-14T19:53:22.210 に答える
0

私は解決策を見つけました:

hibernate-core 依存関係を追加する必要があります。それがなければうまくいきません。

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.0.1.Final</version>
    </dependency>
于 2013-02-14T13:58:54.687 に答える