Как мне скомпилировать с -Xlint: не отмечен?

84

При компиляции кода я получаю сообщение:

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

Как мне перекомпилировать -Xlint:unchecked?

Дэйв Фишер
источник
1
Вы компилируете из командной строки? Если да, добавьте в -Xlint:uncheckedвыполняемую командную строку, как указано в сообщении.
101100
зависит от того, как вы запускаете свой код .. это от затмения? командная строка?
Boaz
Что ты сделал? Я никогда не видел этого сообщения об ошибке ...
AlexR

Ответы:

54

Укажите его в командной строке для javac:

javac -Xlint: не отмечен

Или, если вы используете Ant, измените свою цель javac

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

Если вы используете Maven, настройте это в maven-compiler-plugin

<compilerArgument>-Xlint:unchecked</compilerArgument>
судокод
источник
Я Maven 3, модель 4,0 - The <compilerArgument>идет под <configuration>не в `<compilerArguments>» элемента. Дурак я.
будет
А как насчет компиляции внутри AOSP? Что мне добавить в файл Android.mk?
Доктор Джеки 05
48

Для IntelliJ 13.1 перейдите в File-> Settings-> Project Settings-> Compiler-> Java Compilerи с правой стороны для Additional command line parametersввода "-Xlint:unchecked".

Брайан Бернс
источник
Благодарю. Но для 13.1 Community Edition он находится в File - Settings - Compiler - Java Compiler, а поле находится внизу.
RenniePet
7
Для версии 14.0.3 эта страница настроек перемещена в: Файл - Настройки - Сборка, Выполнение, Развертывание - Компилятор - Компилятор Java.
csauve
1
Нет в AndroidStudio, там параметры компилятора, похоже, доступны для любого компилятора, а не только для Java. Редактирование build.gradle действительно работает.
Alex Cohn
В Android Studio параметры компилятора можно найти в меню « Файл» -> « Настройки нового проекта» -> « Настройки для новых проектов» . Они , однако , как представляется, не применяются к существующему проекту.
JJD
26

В проекте Gradle вы можете добавить этот параметр компиляции следующим образом:

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:unchecked"
    }
}
xianlinbox
источник
4
В последних версиях Gradle тип задачи Compileбыл переименован в JavaCompile, так оно и естьtasks.withType(JavaCompile) { ... }
obecker
1
Я бы добавил, что это должно войтиallprojects { // ... }
Борж
21

Я знаю, это звучит странно, но я уверен, что это твоя проблема:

Где-то в MyGui.java вы используете общую коллекцию без указания типа. Например, если вы где-то используете ArrayList, вы делаете это:

List list = new ArrayList();

Когда вам следует это делать:

List<String> list = new ArrayList<String>();
Эндрю Расмуссен
источник
Большое спасибо, мне это помогло!
Farb
14

Есть еще один способ создания градиента:

compileJava {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
карьер
источник
Например, это не повлияет на тесты.
Trilarion
2
Для Android Studio это, похоже, требует немного другого подхода:tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" }
Alex Cohn,
3
для Android Studio 2.1.3 добавить это проект build.gradle allprojects { repositories { jcenter() } gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } }
Тарн
4

Для Android Studio добавьте следующее в файл верхнего уровня build.gradleв allprojectsблоке

tasks.withType(JavaCompile) {
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 
}
Кружение
источник
3

В CMD напишите:

javac -Xlint:unchecked MyGui2.java

он отобразит список неотмеченных или небезопасных операций.

Химаншу Аггарвал
источник
3

Если вы работаете с такой IDE, как NetBeans, вы можете указать параметр Xlint:unchecked компилятора в свойствах вашего проекта.

Просто зайдите в окно проектов, щелкните проект правой кнопкой мыши и нажмите Properties.

В появившемся окне выполните поиск по Compilingкатегории и в текстовом поле с надписью Additional Compiler Optionsустановите Xlint:uncheckedпараметр.

Таким образом, этот параметр будет оставаться установленным каждый раз, когда вы компилируете проект.

Josue
источник
2

Более чистый способ указать аргументы компилятора Gradle:

compileJava.options.compilerArgs = ['-Xlint:unchecked','-Xlint:deprecation']
Джим Х
источник
Это может быть короче, но не чище . Во-первых, он переопределяет существующие параметры, установленные в другом месте. Во-вторых, это не повлияет на тест, как указано в комментариях ниже ответа tarn. Не делайте этого, вместо этого используйте ответ xianlinbox.
Конрад Рудольф
1

другой способ компиляции с использованием -Xlint: не отмечен через командную строку

javac abc.java -Xlint:unchecked

он покажет непроверенные и небезопасные предупреждения.

Deepak Jaiswal
источник
0

К вашему сведению, доступ к этим настройкам изменился для IntelliJ 15, новый и улучшенный для еще более глубокого захоронения!

Теперь это: Файл> Другие настройки> Настройки по умолчанию> 'Сборка, выполнение, развертывание'> Компилятор> Компилятор Java.

А в дополнительных параметрах командной строки, как и раньше, напишите «-Xlint: unchecked».

HAKitz
источник