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?

Dave Fisher
źródło
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>
sudocode
źródło
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".

Brian Burns
źródło
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"
    }
}
xianlinbox
źródło
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>();
Andrew Rasmussen
źródło
Wielkie dzięki, to mi pomogło!
Farb,
14

Jest inny sposób na gradle:

compileJava {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
Tarn
źródło
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" 
}
Wirujące
źródło
3

W CMD napisz:

javac -Xlint:unchecked MyGui2.java

wyświetli listę niezaznaczonych lub niebezpiecznych operacji.

Himanshu Aggarwal
źródło
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.

Josue
źródło
2

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

compileJava.options.compilerArgs = ['-Xlint:unchecked','-Xlint:deprecation']
Jim H.
źródło
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.

deepak jaiswal
źródło
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”.

HAKitz
źródło