Jak skompilować z -Xlint: niezaznaczone?


84

Otrzymuję komunikat podczas kompilacji kodu:

Note: H:\Project2\MyGui2.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Jak ponownie skompilować z -Xlint:unchecked?


1
Czy kompilujesz w wierszu poleceń? Jeśli tak, dodaj -Xlint:uncheckeddo wykonywanego wiersza poleceń, tak jak wskazuje komunikat.
101100

zależy od tego, jak uruchomisz kod… czy pochodzi z zaćmienia? wiersz poleceń?
Boaz

Co zrobiłeś? Nigdy nie widziałem tego komunikatu o błędzie ...
AlexR

Odpowiedzi:


54

Określ go w wierszu poleceń dla javac:

javac -Xlint: niezaznaczone

Lub jeśli używasz Ant, zmodyfikuj cel javac

  <javac ...>
    <compilerarg value="-Xlint"/>
  </javac> 

Jeśli używasz Maven, skonfiguruj to w maven-compiler-plugin

<compilerArgument>-Xlint:unchecked</compilerArgument>

Mam maven 3, model 4.0 - <compilerArgument>idzie pod <configuration>nie w elemencie `<compilerArguments> ' . Głupi ja.
będzie

A co z kompilacją wewnątrz AOSP? Co dodać do pliku Android.mk?
Dr Jacky,

48

W przypadku IntelliJ 13.1 przejdź do File-> Settings-> Project Settings-> Compiler-> Java Compileri po prawej stronie, aby Additional command line parameterswejść "-Xlint:unchecked".


Dzięki. Ale w 13.1 Community Edition znajduje się w Plik - Ustawienia - Kompilator - Kompilator Java, a pole znajduje się na dole.
RenniePet

7
W wersji 14.0.3 ta strona ustawień została przeniesiona do: Plik - Ustawienia - Kompilacja, wykonanie, wdrożenie - Kompilator - Kompilator Java.
csauve

1
Nie w AndroidStudio, wydaje się, że opcje kompilatora są dostarczane dla każdego kompilatora, nie tylko dla Javy. Edycja build.gradle działa.
Alex Cohn

W Android Studio opcje kompilatora można znaleźć w Plik -> Ustawienia nowego projektu -> Ustawienia dla nowych projektów . Wydaje się jednak, że nie mają one zastosowania do istniejącego projektu.
JJD

26

W projekcie Gradle możesz dodać ten parametr kompilacji w następujący sposób:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked"
    }
}

4
W ostatnich wersjach Gradle typ zadania Compilezostała zmieniona na JavaCompile, więc jesttasks.withType(JavaCompile) { ... }
obecker

1
Dodam, że to powinno wejśćallprojects { // ... }
Borzh

21

Wiem, że to brzmi dziwnie, ale jestem pewien, że to twój problem:

Gdzieś w MyGui.java używasz ogólnej kolekcji bez określania typu. Na przykład, jeśli używasz gdzieś ArrayList, robisz to:

List list = new ArrayList();

Kiedy powinieneś to robić:

List<String> list = new ArrayList<String>();

Wielkie dzięki, to mi pomogło!
Farb,

14

Jest inny sposób na gradle:

compileJava {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

Nie wpłynie to na przykład na testy.
Trilarion

2
Wydaje się, że w przypadku Android Studio wymaga to nieco innego podejścia:tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" }
Alex Cohn

3
dla Android Studio 2.1.3 dodaj to do projektu build.gradle allprojects { repositories { jcenter() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } }
tarn

4

W przypadku Android Studio dodaj następujące elementy do build.gradlepliku najwyższego poziomu w allprojectsbloku

tasks.withType(JavaCompile) {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 
}

3

W CMD napisz:

javac -Xlint:unchecked MyGui2.java

wyświetli listę niezaznaczonych lub niebezpiecznych operacji.


3

Jeśli pracujesz z IDE, takim jak NetBeans, możesz określić Xlint:unchecked opcję kompilatora we właściwościach projektu.

Po prostu przejdź do okna projektów, kliknij prawym przyciskiem myszy projekt, a następnie kliknij Properties.

W wyświetlonym oknie wyszukaj Compilingkategorię i Additional Compiler Optionsustaw Xlint:uncheckedopcję w polu tekstowym oznaczonym etykietą .

W związku z tym ustawienie pozostanie ustawione za każdym razem, gdy kompilujesz projekt.


2

Czystszy sposób określenia argumentów kompilatora Gradle jest następujący:

compileJava.options.compilerArgs = ['-Xlint:unchecked','-Xlint:deprecation']

To może być krótsze, ale nie jest czystsze . Po pierwsze, zastępuje istniejące opcje ustawione w innym miejscu. Po drugie, nie zadziała na test wpływu, jak zauważono w komentarzach pod odpowiedzią Tarna. Nie rób tego, zamiast tego użyj odpowiedzi xianlinbox.
Konrad Rudolph

1

inny sposób kompilacji za pomocą -Xlint: niezaznaczony w linii poleceń

javac abc.java -Xlint:unchecked

pokaże niezaznaczone i niebezpieczne ostrzeżenia.


0

FYI dostanie się do tych ustawień zmieniło się dla IntelliJ 15, nowe i ulepszone dla jeszcze głębszego pochówku!

Teraz jest to: Plik> Inne ustawienia> Ustawienia domyślne> „Kompilacja, wykonanie, wdrożenie”> Kompilator> Kompilator Java

I w Dodatkowe parametry wiersza poleceń, tak samo jak poprzednio, wpisz „-Xlint: unchecked”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.