2016-06-02 24 views
18

Finora abbiamo utilizzato le annotazioni JSR-305 di Findbugs (com.google.code.findbugs: jsr305) e tutto ciò che include il supporto degli strumenti (Sonar, Eclipse, Findbugs, ...) è stato funziona bene.Sostituzione annotazioni JSR-305 per Java 9

Tuttavia è a nostra conoscenza che Jigsaw in Java 9 interromperà le annotazioni JSR-305 (un pacchetto in due moduli non è consentito). Ciò è stato confermato a JavaOne 2015. Il ragionamento di Oracle è JSR-305 mai accaduto e JSR-250 avrebbe dovuto approvare queste annotazioni.

Stiamo cercando sostituzioni per annotazioni JSR-305 che funzionano sia in Java 8 che in Java 9. Se la cronologia è una guida, il tempo tra Java 9 GA e Java 8 EOL sarà piuttosto breve e vorremmo risolvere eventuali incompatibilità nel nostro codice in anticipo. In teoria potremmo aggiornare il modulo di annotazioni del JDK ma farlo attraverso la nostra toolchain sembra molto lavoro.

+0

Ho fatto una domanda di recente andando nella stessa direzione ([annotazione di futureNonNonNull] (http://stackoverflow.com/questions/35892063/which-nonnull-java-annotation-to-use)) tuttavia la domanda è stata rapidamente chiuso. Credo ancora che le persone siano interessate alla risposta. – Lonzak

risposta

22

È vero che due moduli non possono, normalmente, definire tipi nello stesso pacchetto . Fino a poco tempo, mettendo jsr305.jar sul percorso classe di un JDK   9 accumulo non avrebbe alcun effetto: Questo file JAR definisce i tipi nel pacchetto javax.annotation ma quel pacchetto è definito nella piattaforma built-in java.annotations.common modulo e quest'ultimo prende precedenza.

causa in parte alla diffusione di jsr305.jar, tuttavia, e anche agevolare l'application server esistente a migrare verso JDK   9, abbiamo recentemente cambiato l'insieme predefinito di moduli root per escludere il modulo annotazioni , tra gli altri. Inserendo jsr305.jar nel JDK   9 il percorso di classe ora funziona immediatamente. I dettagli sono disponibili in JEP 261.

+0

Grazie, è una buona notizia. –

+2

Significa che non posso usare '@ Nonnull' e' @ PostConstruct' nello stesso progetto? – jkschneider

+0

Immagino che sia possibile creare un modulo personalizzato con entrambe le annotazioni 'java.annotations.common' e' jsr305.jar', se necessario. –

Problemi correlati