今天在打包項目的過程當中出現了編譯問題,奇怪的是這個項目已經很久沒有修改過了,報錯以下。java
找不到符號
[ERROR] 符號: 方法 intent(java.lang.String)
[ERROR] 位置: 類型爲com.paypal.orders.OrderRequest的變量 orderRequest
找不到符號
[ERROR] 符號: 方法 amount(com.paypal.orders.AmountWithBreakdown)
[ERROR] 位置: 類 com.paypal.orders.PurchaseUnitRequest
複製代碼
緣由在於設置外部依賴包的版本時使用了LATEST,這樣每次便會嘗試拉取最新版本的包。maven
<dependency>
<groupId>com.paypal.sdk</groupId>
<artifactId>checkout-sdk</artifactId>
<version>LATEST</version>
</dependency>
複製代碼
問題的錯誤提示很明確,是找不到paypal的sdk方法,很天然的就把問題指向了版本依賴上面,通過一番搜索後在Maven倉庫中發現checkout-sdk這個包在2019年7月份的時候發佈了1.0.1版本,這個版本在一些功能上沒有向上兼容舊版本,致使項目中依賴了1.0.0版本所使用的sdk,再依賴了新版本後便出現了編譯問題。spa
找到問題緣由以後,咱們只須要把版本號改爲原來的舊版本即可以了。3d
<dependency>
<groupId>com.paypal.sdk</groupId>
<artifactId>checkout-sdk</artifactId>
<version>1.0.0</version>
</dependency>
複製代碼
在依賴外部包的時候,版本號不要直接寫LATEST,要使用固定的版本號,不然有可能出現包升級,致使不兼容的問題。code