Як скомпілювати за допомогою -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,

залежить від того, як ви запускаєте свій код .. це від затемнення? командний рядок?
Боаз,

Що ти робив? Я ніколи не бачив цього повідомлення про помилку ...
AlexR

Відповіді:


54

Вкажіть це в командному рядку для javac:

javac -Xlint: не позначено

Або якщо ви використовуєте Ant, змініть свою ціль javac

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

Якщо ви використовуєте Maven, налаштуйте це в maven-compiler-plugin

<compilerArgument>-Xlint:unchecked</compilerArgument>

У мене є maven 3, модель 4.0 - ця <compilerArgument>функція <configuration>не входить до елемента <compilerArguments> . Дурний я.
буде

А як щодо компіляції всередині AOSP? Що слід додати до файлу Android.mk?
Dr.jacky

48

Для IntelliJ 13.1 перейдіть до File-> Settings-> Project Settings-> Compiler-> Java Compiler, а праворуч - до Additional command line parametersenter "-Xlint:unchecked".


Дякую. Але для версії 13.1 Community це "Файл - Налаштування - Компілятор - Компілятор Java", а поле знаходиться внизу.
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

Існує ще один спосіб gradle:

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

Наприклад, це не вплине на тести.
Триларіон

2
Для Android Studio це, здається, вимагає дещо іншого підходу:tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" }
Алекс Кон

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параметр.

Таким чином, параметр залишатиметься встановленим під час кожного компіляції проекту.


2

Додано більш чистий спосіб вказати аргументи компілятора Gradle:

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

Це може бути коротше, але це не чистіше . З одного боку, це перекриває існуючі опції, встановлені в інших місцях. З іншого боку, це не спрацює на тест, як зазначено в коментарях нижче відповіді Tarn. Не робіть цього, скоріше використовуйте відповідь xianlinbox.
Конрад Рудольф

1

інший спосіб компіляції за допомогою -Xlint: не позначений через командний рядок

javac abc.java -Xlint:unchecked

він відображатиме неперевірені та небезпечні попередження.


0

Доступ до цих налаштувань змінився для IntelliJ 15, нового та вдосконаленого для ще глибшого поховання!

Тепер це: Файл> Інші налаштування> Налаштування за замовчуванням> 'Створення, виконання, розгортання'> Компілятор> Компілятор Java

А в Додаткові параметри командного рядка, так само, як і раніше, напишіть "-Xlint: не позначено".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.