Pytanie Pomijanie nietrafionych ostrzeżeń Java w plikach JSP


Mam starszą aplikację webową, która używa znaczników jstl i Struts 1. Kiedy wstępnie kompiluję pliki JSP przy pomocy Javy 5/6, znaczniki jstl i Struts 1 wyświetlają ostrzeżenia o "niezaznaczonych lub niebezpiecznych operacjach". Na przykład, jeśli użyję następującego tagu:

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

Zostanie wyświetlone następujące ostrzeżenie:

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

Jeśli dokonam ponownej kompilacji przy użyciu opcji -Xlint: niezaznaczonej, otrzymuję szczegółowe informacje o wewnętrznej pracy niepoprawnej biblioteki znaczników JSP. Chciałbym ukryć wszystkie niezaznaczone ostrzeżenia dotyczące operacji. Pomyślałem, że użycie opcji -Xlint: -unchecked powstrzymałoby ostrzeżenia, ale tak się nie stało.

Jak usunąć te ostrzeżenia podczas kompilowania stron JSP? Nie byłoby praktyczne ponowne kodowanie bibliotek znaczników JSP lub aktualizowanie tysiąca stron JSP. Szukam flagi kompilatora, aby globalnie wyłączyć ostrzeżenie, więc widzę wszystkie ostrzeżenia oprócz odznaczonych ostrzeżeń. Dzięki!


11
2018-02-07 19:42


pochodzenie


Możliwy duplikat Czy istnieje odpowiednik Java @SuppressWarnings w JSP? - justkt
W tym pytaniu pytali o coś, co można by dodać do indywidualnej strony JSP, aby powstrzymać ostrzeżenie. Szukam czegoś globalnego. - Bob
Tak, mogę zignorować ostrzeżenia, ale mam ich kilka tysięcy i chciałbym móc zobaczyć uzasadnione ostrzeżenia (zdeprecjonowane interfejsy API itp.), Aby je poprawić. - Bob
Czy te ostrzeżenia są generowane podczas kompilacji IDE? Jeśli używasz środowiska Eclipse, możesz wyłączyć sprawdzanie poprawności JSP @ Windows> Preferencje> Sprawdzanie poprawności - Nick
Prawdziwa odpowiedź brzmi: "Kod Java należy do klasy Java, a nie do plików JSP". Ale skoro masz ich kilka tysięcy: / Czuję się przykro. - BalusC


Odpowiedzi:


Te wiadomości są (obowiązkowe dla JDK> = 1.5) notatką, a nie ostrzeżeniem.

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

Domyślne zachowanie kompilatora jest takie samo jak w przypadku -Xlint:-unchecked.

Z -Xlint:unchecked włączasz ostrzeżenie, zgłaszając każde wystąpienie.

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

Obligatoryjnych notatek nie można wyłączyć osobno, wszystkie są wyłączone za pomocą -Xlint:none. Niestety, pozostałe ostrzeżenia są również wyłączone.

Możesz sprawdzić inne odpowiedzi na alternatywy, ale filtrowanie komunikatów wyjściowych kompilatora wydaje się najłatwiejszym rozwiązaniem.


1
2018-04-26 10:21





Masz rację

-Xlint:unchecked

działa odwrotnie, niż chcesz, ale możesz też użyć

-Xlint:-unchecked

Zwróć uwagę na dodatkowe "-".

Spowoduje to wyłączenie wszystkich ostrzeżeń dotyczących niezaznaczonych operacji, a nie tylko tych wygenerowanych przez bibliotekę znaczników, ale inne ostrzeżenia będą nadal wyświetlane.


0
2018-02-08 16:45



Właściwie już to wypróbowałem. W przypadku Xlint: -unchecked, pojawia się komunikat "Przekompiluj z Xlint: niezaznaczony" raz na jeden obrazący plik. W przypadku Xlint: odznaczony, otrzymujesz szczegółową wiadomość z dokładnym numerem linii biblioteki znaczników, która narusza niezaznaczoną regułę. Chciałbym całkowicie wyłączyć ostrzeżenie, a nie tylko skrócić rozmiar ostrzeżenia. - Bob
-1 -Xlint: -unchecked jest wartością domyślną. Ta flaga wyświetla notatkę. - fglez


najlepszym sposobem na wyłączenie tego ostrzeżenia jest zaprzestanie używania kodu Java na stronach JSP. Zacznij przyzwyczajać się do używania JSTL lub JSF (w razie potrzeby za pomocą niestandardowych bibliotek znaczników).

Ale w przypadku starszych aplikacji nie będziesz w stanie zrobić tego najprawdopodobniej, a będziesz musiał żyć z ostrzeżeniami. Oczywiście możesz dodać flagę -nowarn do kompilatora, ale spowoduje to wyłączenie WSZYSTKICH ostrzeżeń, nie tylko tego, który może być większy niż chcesz.


0
2018-02-17 08:03