Как мне скомпилировать с -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"
    }
}

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

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

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

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

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


2

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

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

Это может быть короче, но не чище . Во-первых, он переопределяет существующие параметры, установленные в другом месте. Во-вторых, это не повлияет на тест, как указано в комментариях ниже ответа tarn. Не делайте этого, вместо этого используйте ответ xianlinbox.
Конрад Рудольф

1

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

javac abc.java -Xlint:unchecked

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


0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.