2011-02-07 12 views
11

Ho una webapp legacy che utilizza i tag jstl e Struts 1. Quando eseguo la pre-compilazione dei file JSP con Java 5/6, i tag jstl e Struts 1 generano avvisi relativi a "operazioni non controllate o non sicure". Per esempio, se io uso il seguente tag:Soppressione degli avvisi Java non selezionati nei file JSP

<%@ page import="/anotherpage.inc" %> 

il seguente avviso è gettato:

[javac] Note: Some input files use unchecked or unsafe operations. 
[javac] Note: Recompile with -Xlint:unchecked for details. 

Se io ricompilare con -Xlint: non selezionata, ottengo dettagli circa il funzionamento interno della libreria di tag JSP incriminata. Vorrei sopprimere tutti gli avvisi di operazione non controllati. Ho pensato che usare -Xlint: -unchecked avrebbe soppresso gli avvertimenti, ma non è così.

Come si eliminano questi avvisi durante la compilazione delle pagine JSP? Non sarebbe pratico ricodificare le librerie di tag JSP o aggiornare un migliaio di pagine JSP. Sto cercando un flag del compilatore per disattivare globalmente l'avviso in modo da poter vedere tutti gli avvisi tranne gli avvisi non controllati. Grazie!

+1

Possibile duplicato [Esiste un equivalente a Java @SuppressWarnings in JSP?] (Http: // stackoverflow.it/questions/487715/is-there-an-equivalent-to-java-suppresswarnings-in-jsp) – justkt

+1

In quella domanda, chiedevano qualcosa che potesse essere aggiunto a un JSP individuale per sopprimere l'avviso. Sto cercando qualcosa di globale. – Bob

+0

Gli avvertimenti non vengono lanciati e sono solo avvisi. Se il tuo codice funziona correttamente, puoi tranquillamente ignorarlo. –

risposta

0

Sei giusto che

-Xlint:unchecked

fa il contrario di ciò che si vuole, ma si può anche utilizzare

-Xlint:-unchecked

nota l'extra "-" in là.

In questo modo verranno disattivati ​​tutti gli avvisi relativi alle operazioni deselezionate, non solo quelle generate dalla libreria di tag, ma verranno comunque visualizzati altri avvisi.

+0

In realtà l'ho già provato. Con Xlint: -unchecked, si ottiene il messaggio "Ricompila con Xlint: deselezionato" una volta per file incriminato. Con Xlint: deselezionato, si ottiene un messaggio dettagliato con il numero di riga esatto della libreria di tag che viola la regola deselezionata. Mi piacerebbe disattivare completamente l'avviso e non solo ridurre la dimensione dell'avviso. – Bob

+0

-1 -Xlint: -unchecked è il valore predefinito. Quella bandiera continua a mostrare la nota. – fglez

0

il modo migliore per disattivare tale avviso è interrompere l'utilizzo del codice Java nei JSP. Inizia ad abituarsi all'utilizzo di JSTL o JSF (con librerie di tag personalizzate, se necessario).

Ma con le applicazioni legacy non si sarà in grado di farlo molto probabilmente, e si dovrà solo convivere con gli avvertimenti. Ovviamente è possibile aggiungere il flag -nowarn al compilatore, ma ciò disabiliterà TUTTI gli avvertimenti, non solo questo, che potrebbe essere più di quanto si desideri.

1

Questi messaggi sono una nota (obbligatoria per JDK> = 1.5), non un avviso.

compiler.note.unchecked.plural=\ 
    Some input files use unchecked or unsafe operations. 

Il comportamento del compilatore predefinito è lo stesso di -Xlint:-unchecked.

Con -Xlint:unchecked si attiva l'avviso, segnalando ogni istanza.

compiler.warn.unchecked.assign=\ 
    [unchecked] unchecked assignment: {0} to {1} 
... 

note obbligatori non possono essere disattivati ​​singolarmente, sono tutti disabile con -Xlint:none. Sfortunatamente anche il resto degli avvisi è disabilitato.

È possibile controllare altre risposte per le alternative, ma il filtraggio dei messaggi di output del compilatore sembra la soluzione più semplice.

Problemi correlati