如何使用-Xlint:unchecked进行编译?


80

我在编译代码时收到一条消息:

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

如何重新编译-Xlint:unchecked


1
您是否在命令行上进行编译?如果是这样,则将其添加-Xlint:unchecked到正在执行的命令行中,如消息所示。
101100

取决于您如何运行代码..是从Eclipse来的吗?命令行?
波阿斯

你做了什么?我从未见过此错误消息……
AlexR

Answers:


52

在javac的命令行上指定它:

javac -Xlint:unchecked

或者,如果您使用的是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 '17

48

对于IntelliJ 13.1,转到File-> Settings-> Project Settings-> Compiler-> Java Compiler,然后在右侧Additional command line parameters输入"-Xlint:unchecked"


谢谢。但是对于13.1 Community Edition,它位于文件-设置-编译器-Java编译器中,并且该字段位于底部。
RenniePet 2014年

7
对于14.0.3,此设置页面已移至:文件-设置-生成,执行,部署-编译器-Java编译器。
csauve

1
不在AndroidStudio上,似乎为所有编译器都提供了编译器选项,而不仅仅是Java。编辑build.gradle确实可以。
亚历克斯·科恩

Android Studio中,可以在“文件” ->“新项目设置” -> 新项目的设置”下找到编译器选项。然而,他们似乎并不适用于现有项目。
JJD

26

在gradle项目中,可以通过以下方式添加此compile参数:

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

4
在最近的gradle版本中,任务类型Compile已重命名为JavaCompile,所以它是tasks.withType(JavaCompile) { ... }
obecker 17-10-23

1
我要补充一点,这应该进行allprojects { // ... }
Borzh

21

我知道这听起来很奇怪,但是我很确定这是您的问题:

在MyGui.java中的某个地方,您使用的是通用集合,而没有指定类型。例如,如果您在某处使用ArrayList,则可以这样做:

List list = new ArrayList();

当您应该这样做时:

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

非常感谢,这对我有所帮助!
Farb

14

gradle还有另一种方式:

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

例如,这不会影响测试。
Trilarion 2015年

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" } } }
塔恩

3

在CMD中,编写:

javac -Xlint:unchecked MyGui2.java

它将显示未检查或不安全操作的列表。


3

如果使用NetBeans之类的IDE,则可以Xlint:unchecked 在项目的属性中指定编译器选项。

只需转到项目窗口,右键单击项目,然后单击 Properties

在出现的窗口中搜索Compiling类别,然后在标记为的文本框中Additional Compiler Options设置Xlint:unchecked

因此,该设置将在每次编译项目时保持设置。


3

对于Android Studio,将以下内容添加到块中的顶级build.gradle文件中allprojects

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

2

指定Gradle编译器参数的更简洁方法如下:

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

这可能更短,但并不干净。一方面,它会覆盖其他位置设置的现有选项。另一方面,它不会对测试产生影响,正如塔恩的答案下方的注释所指出的那样。不要这样做,请改用xianlinbox的答案。
康拉德·鲁道夫

1

使用-Xlint进行编译的其他方法:通过命令行未选中

javac abc.java -Xlint:unchecked

它将显示未经检查和不安全的警告。


0

仅供参考,IntelliJ 15更改了这些设置,并且为更深层的埋葬进行了改进。

现在是:“文件”>“其他设置”>“默认设置”>“构建,执行,部署”>“编译器”>“ Java编译器”

在“其他命令行参数”中,与以前相同,输入“ -Xlint:unchecked”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.