2017-09-28 15 views
2

eclipseLink 2.7.0で静的製織のために実行中のgradleタスクでエラーが発生しました。eclipseLink 2.7.0: "javax.persistence.AttributeConverter"の署名者情報の静的な製織エラーが一致しません

21:50:14.206 [ERROR] [system.err]例外の説明:PersistenceUnitの[Predeployment [default] failed。
[ERROR] [system.err]内部例外:java.lang.SecurityException:クラス "javax.persistence.AttributeConverter"の署名者情報が署名者情報と一致しません 同じパッケージ内の他のクラスのrmation
21:50:14.206 [ERROR] [System.errの】org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createPredeployFailedPersistenceException(EntityManagerSetupImpl.java:20 80)で
21:50:14.206 [ERROR] [システム.err] org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:2071)
21:50:14.206 [ERROR] [system.err]例外の説明:PersistenceUnitのプリデプロイメントが失敗しました。 21:50:14.206 [ERROR] [system.err]内部例外: java.lang.SecurityException:クラスjavax.persistence.AttributeConverterの署名者情報が署名者情報と一致しない 同じクラスの他のクラスのクラスパッケージ

これらの競合は、クラスが異なるjarによって参照される場合に発生することにご注意ください。
同じ行でチェックされています.AttributeConverterは、javax.persistence 2.2.0とeclipselink 2.7.0に存在し、競合の原因となります。 javax.persistence 2.2.0はeclipselink 2.7.0の依存関係に必要です。
私はgussesingは、1つのjarからAttributeConverterを参照することができるようにjarファイルの1つを除外する必要があります。

この問題を解決するにはどうすればよいですか?

答えて

1

瓶の署名に問題があるようです。 eclipselink 2.7.0は、eclipselink 2.7.0ではないeclipse foundationによって署名されたjavax persistence 2.2.0を使用します。 私のケースではAttributeConverterが参照されていて、シグネチャの不一致がありました。 Issue 525457は既にeclipse.orgに提出されています
javax.persistence 2.1を使用すると問題が解決しました。私の場合は

0

私が知る限り、javax.persistenceはeclipselink 2.7.0の推移的な依存関係です。

つまり、別の依存関係として追加する必要はありません。

私に多くを助けたものは、gradleからのdependencyInsightです。依存関係が引き出されたさまざまなソースを表示します。

dependencyInsight --dependency javax.persistence 

あなたがdependencyInsightに表示されている場合は、推移的依存関係が引かされることを、あなたがその特定の依存関係のために推移的依存関係を無効にしてみてください(例のjavax.persistence別のソースから)にしたいか、単に除外するものではありませんそれ。

もう少し前に同様の問題がありました。私の迅速な修正は、ルートプロジェクトのビルドパスにあるjavax.persistenceのチェックを外していました。 一般に、プロジェクトが1つしかない場合、依存関係が使用される順序を切り替えてみることができます。 プロジェクトの[注文とエクスポート]タブのJavaビルドパスでその設定を見つけることができます。 (私はちょうどあなたがIDEとしてEclipseを使用していると仮定しています)

javax.persistenceをリストの下に移動したり、チェックを外してみてください。

個人的には、jpaには2つのgradle依存関係しかありません。

org.eclipse.persistence:org.eclipse.persistence.jpa 
org.eclipse.persistence:eclipselink 

私はeclipselink依存関係の推移的な依存関係を無効にしました。

3

は、バンドルされたJPAのAPIの依存関係を除くと、スタンドアロンのものを含むが支援してきました:

<dependency> 
     <groupId>org.eclipse.persistence</groupId> 
     <artifactId>org.eclipse.persistence.jpa</artifactId> 
     <version>2.7.0</version> 
     <exclusions> 
      <exclusion> 
       <!-- The JPA API imported separately due to problems with JAR signature. --> 
       <groupId>org.eclipse.persistence</groupId> 
       <artifactId>javax.persistence</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>javax.persistence</groupId> 
     <artifactId>javax.persistence-api</artifactId> 
     <version>2.2</version> 
    </dependency> 
関連する問題