2016-07-02 5 views
0

を理解する:プロジェクトを実行しようとしたとき、私はこのエラーを直面しています、私は<code>ApplicationConfig</code>ファイルが<code>@EnableAspectJAutoProxy anotation</code>を持っているSpringアプリケーションをコンパイルしようとしていますMavenの依存関係ツリーの出力

Failed to instantiate [org.springframework.aop.aspectj.annotation. 
AnnotationAwareAspectJAutoProxyCreator]: 
Constructor threw exception; nested exception is  
java.lang.NoClassDefFoundError: org/aspectj/lang/annotation/Around 

私が削除したときと言わざるを得ないアノテーションの上にプロジェクトが正常に実行されています。

インターネットで読んだことは、互換性のないバージョンのライブラリとjarファイルが原因である可能性があります。

[INFO] task-segment: [dependency:tree] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [dependency:tree {execution: default-cli}] 
[INFO] groupId:myProject:jar:1.0-SNAPSHOT 
[INFO] +- junit:junit:jar:4.11:compile 
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:compile 
[INFO] +- org.springframework:spring-webmvc:jar:4.3.0.RELEASE:compile 
[INFO] | +- org.springframework:spring-aop:jar:4.2.6.RELEASE:compile (version m 
anaged from 4.3.0.RELEASE) 
[INFO] | | \- aopalliance:aopalliance:jar:1.0:compile 
[INFO] | +- org.springframework:spring-beans:jar:4.2.6.RELEASE:compile 
[INFO] | +- org.springframework:spring-context:jar:4.2.6.RELEASE:compile (versi 
on managed from 4.3.0.RELEASE) 
[INFO] | +- org.springframework:spring-core:jar:4.2.6.RELEASE:compile 
[INFO] | +- org.springframework:spring-expression:jar:4.2.6.RELEASE:compile 
[INFO] | \- org.springframework:spring-web:jar:4.2.6.RELEASE:compile (version m 
anaged from 4.3.0.RELEASE) 
[INFO] +- org.aspectj:aspectjweaver:jar:1.8.9:compile 
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:compile 
[INFO] \- org.aspectj:aspectjrt:jar:1.8.9:compile 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3 seconds 

、これはpom.xmlファイルの内容です:私はmvn dependency:treeを実行すると

出力は以下の通りである

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.3.0.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjweaver</artifactId> 
     <version>1.8.9</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjrt</artifactId> 
     <version>1.8.9</version> 
    </dependency> 
</dependencies> 

質問:私は、この出力があることを理解していません私のプロジェクトにすべての問題があるとか、ある種の非互換性があるかもしれないと言って、それを解決する方法があれば?

答えて

0

あなたのプロジェクトで依存関係管理の仕事をしている場合は、少なくとも1回は問題に直面している必要があります。そして問題はバージョンの不一致です。一般的には、依存関係があるバージョンと一緒に関連する依存関係を持っている場合に起こります。これらの依存関係をすでに異なるバージョン番号に含めておけば、コンパイル時にも実行時にも望ましくない結果に直面する可能性があります。

上記の問題を回避するには、関連する依存関係を明示的に除外する必要がありますが、忘れる可能性があります。

バージョンミスマッチの問題を解決するには、"部品表記"(BOM)依存のコンセプトを使用できます。 BOMの依存関係は、バージョン番号を把握し、すべての依存関係(直接および推移の両方)が同じバージョンであることを保証します。

BOM [部品表]依存関係を追加する方法

Mavenのこの目的のために、タグdependencyManagementを提供します。このタグにbom情報を追加する必要があります。私は春のBOMファイルの例を取っ​​ています。 AnはBOMを使用する利点を追加

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-framework-bom</artifactId> 
      <version>4.3.0.RELEASE</version> 
      <type>pom</type> 
     <scope>import</scope> 
    </dependency> 
</dependencies> 

は、春のフレームワークの成果物に依存するとき、あなたは、もはやバージョン属性を指定する必要があることではありません。だからそれは完璧に正常に動作します。

<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
    </dependency> 
<dependencies> 

上記のように実行すると、すべてのバージョンの比較の問題を解決し、アプリケーションは、私たちが

+0

おかげであなたの答えのための比類のないバージョンを使用するつもりはないとして正常に動作しますが、私は私が電流を得ることができますwhih答えを探していますコードをすべてゼロから変更しないようにするためのコード – Siavosh

+0

pom.xmlでのみ変更する必要があります。互換性の問題が解決すると確信しています。 – rajadilipkolli

+0

@rajadilipolliので、新しいバージョンのpomを入れてください。xmlファイルの答えを私はそれを試して、それがうまくいくかどうかを調べることができます。正しい答えは – Siavosh

関連する問題