簡體   English   中英

為什么不同組織的javax.annotation不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM