[英]why javax.annotation of different organization are different
我在Java項目中使用了番石榴和碼頭,但發現一個奇怪的問題。 在番石榴中,它依賴於javax.annotation有這么多的類,而在碼頭中,javax.annotation卻比番石榴中少。 它們之間有什么區別。
此外,jetty中的javax.annotation已簽名,而番石榴中的javax.annotation未簽名。 當jvm從guava.jar和jetty.jar中的javax.annotation包中加載類時,它拋出SecurityException,原因是一個包已簽名而其他未簽名。
因此,guava.jar和jetty.jar之間的javax.annotation包的真正區別是什么。
番石榴中的包裹: 沒有跡象並且有很多階級
碼頭包裹:帶簽名,上課很少
javax.annotations
包中提供了各種類型的庫。 番石榴使用的是來自(現已廢棄的) JSR-305建議書中的JAR。 在Maven中,這是com.google.code.findbugs:jsr305:1.3.9
。
另一個JAR似乎是org.eclipse.jetty.orbit:javax.annotation:1.1.0.v201108011116
。 目前尚不清楚該JAR的來源,它似乎是在2011年上傳的,此后再也沒有更新過。
這兩個JAR之間的沖突似乎是眾所周知的 。
似乎在Guava版本13中添加了對此JAR的“依賴性”,但是該版本的發行說明說:
在使用findbugs 2.0時,為findbugs提供了避免依賴沖突的依賴關系。 此更改的副作用是,依賴於Guava來“免費”授予對JSR-305批注的訪問權限的項目將中斷,除非它們自己對該jar(或等效項)提供直接依賴。 項目應該一直直接依賴於JSR-305(按照maven的最佳實踐),但是這種更改使這成為必須。
因此,據我了解,番石榴實際上並不依賴com.google.code.findbugs:jsr305:1.3.9
JAR。 因此,您應該自由地排除該依賴關系,並提供自己的javax.annotations
JAR來代替。 另外,如果您更喜歡com.google.code.findbugs:jsr305
JAR,則應從構建org.eclipse.jetty.orbit:javax.annotation
排除org.eclipse.jetty.orbit:javax.annotation
依賴項。 您可以參考Maven文檔 ,了解如何排除不需要的依賴關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.