Il messaggio di errore da Sonar non sembra avere molto senso perché la risorsa inizia con una barra, e così viene cercato nella radice del percorso di classe. Tuttavia, Sonar non potrebbe verificare ciò che è nella stringa di risorse, e sarà quindi assume il percorso potrebbe essere un percorso relativo ..
Immaginate cosa accadrebbe se aveste scritto una stringa senza una barra:
URL url = getClass().getResource("myWonderfulResource.txt");
L'URL avrebbe puntato a myWonderfulResource.txt
nel pacchetto corrente. Ora, supponiamo di aver esteso la lezione in un altro pacchetto.
package com.example;
public class Wonderous {...}
package com.example.awesome;
public class Awesome extends Wonderous {...}
Quando un'istanza di Awesome
cerca di ottenere il file di testo meraviglioso, sembra che sul percorso di classe in com/es/impressionante. Ma la risorsa Wonderful
è in com/example
. Awesome
non lo troverà.
Per inciso, questo rapporto di errore viene da FindBugs, e la documentation per questo particolare bug è:
UI: L'utilizzo di GetResource può essere pericoloso se la classe è esteso (UI_INHERITANCE_UNSAFE_GETRESOURCE)
chiamata a questo. getClass(). getResource (...) potrebbe dare risultati diversi da quelli previsti se questa classe viene estesa da una classe in un altro pacchetto.
fonte
2013-06-18 15:23:53
Contrassegnato come risposta accettata perché risolveva il problema nella nostra situazione particolare. Tuttavia, se non vuoi/puoi impostare la tua classe come ultima lettura più in basso ... –