現象:idea lib下有jar包但是仍然報錯 找不到類但是有個奇怪現象 同樣的配置下項目在eclipse中可以正常編譯 啟動.
package com.puhui.car.aspect;
import java.util.UUID;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint; 找不到類
import org.aspectj.lang.annotation.Around; ..一樣
import org.aspectj.lang.annotation.Aspect; ..一樣
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;但是lib下能找到 aspectjweaver-1.8.9.jar 最開始的解決方案: 1. 既然少jar包嘗試 手動加入maven pom中 dependency 可以解決<dependency><groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.9</version>
</dependency> 后面發現有太多這個樣的情況 這個解決方案太不方便了 而且別人的eclipse都是好的呀
2.分析jar的dependency 引入情況 然后又查看 Project Structure --> 項目 modules --> xxx-web項目--> Dependencies 下 找到 aspectjweaver1.8.9的jar包 把Scope 從Test改成 Compile ok Done!!! 搞定 . 分析下: aspectjweaver1.8.9 先找它在pom中的定位 發現並沒有 顯示的引入 說明是依賴傳遞 引入的 執行 mvn dependency:tree
找到引入jar包pom <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
<scope>test</scope>
</dependency>
原來 在引入 aop的時候 顯示指定了scope 為test 那么 依賴引入的jar包 仍然是Test scope 但是 eclipse中 即使jar的scope 是Test 仍然能夠編譯 (不知道為啥 待查原因) 同樣的 在idea中嚴格按照 scope標准 所以出現 此現象 3. 既然是引入aop時 是test 所以可以把此處改下 成 compile 或者去掉 <scope>test</scope> 就可以解決