今天在打包項目的過程中出現了編譯問題,奇怪的是這個項目已經好久沒有修改過了,報錯如下。
找不到符號 [ERROR] 符號: 方法 intent(java.lang.String) [ERROR] 位置: 類型為com.paypal.orders.OrderRequest的變量 orderRequest 找不到符號 [ERROR] 符號: 方法 amount(com.paypal.orders.AmountWithBreakdown) [ERROR] 位置: 類 com.paypal.orders.PurchaseUnitRequest
原因在於設置外部依賴包的版本時使用了LATEST,這樣每次便會嘗試拉取最新版本的包。
<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,再依賴了新版本后便出現了編譯問題。
找到問題原因之后,我們只需要把版本號改成原來的舊版本便可以了。
<dependency> <groupId>com.paypal.sdk</groupId> <artifactId>checkout-sdk</artifactId> <version>1.0.0</version> </dependency>
建議
在依賴外部包的時候,版本號不要直接寫LATEST,要使用固定的版本號,否則有可能出現包升級,導致不兼容的問題。