- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有这门课,在src/main/java/RawTypes.java
:
import java.util.*;
public class RawTypes {
private List raw;
public void sortRaw() {
raw.addAll(raw);
}
}
如果我运行 javac -Xlint src/main/java/RawTypes.java
,我收到 2 个警告:一个 rawtypes
警告和 unchecked
警告:
src/main/java/RawTypes.java:4: warning: [rawtypes] found raw type: List
private List raw;
^
missing type arguments for generic class List<E>
where E is a type-variable:
E extends Object declared in interface List
src/main/java/RawTypes.java:7: warning: [unchecked] unchecked call to addAll(Collection<? extends E>) as a member of the raw type List
raw.addAll(raw);
^
where E is a type-variable:
E extends Object declared in interface List
2 warnings
这是我所期望的。
这是我的 pom.xml
:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>nl.jqno.rawtypes</groupId>
<artifactId>rawtypes</artifactId>
<version>0.1-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<encoding>UTF-8</encoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version>
<configuration>
<compilerArgument>-Xlint</compilerArgument>
</configuration>
</plugin>
</plugins>
</build>
</project>
现在,当我运行 mvn clean compile
, 我只得到 unchecked
警告:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building rawtypes 0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ rawtypes ---
[INFO] Deleting /Users/jqno/javarawtypes/target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ rawtypes ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /Users/jqno/javarawtypes/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.5:compile (default-compile) @ rawtypes ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /Users/jqno/javarawtypes/target/classes
[WARNING] /Users/jqno/javarawtypes/src/main/java/RawTypes.java:[7,19] unchecked call to addAll(java.util.Collection<? extends E>) as a member of the raw type java.util.List
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.903 s
[INFO] Finished at: 2016-02-06T23:03:37+01:00
[INFO] Final Memory: 15M/267M
[INFO] ------------------------------------------------------------------------
但我没有得到 rawtypes
警告。
我正在运行 OS X,这在 Java 1.7.0_79 和 1.8.0_45 上都会发生。我试过各种版本的 maven-compiler-plugin
指定参数的各种组合( <compilerArgument>
、 <compilerArgs>
、 -Xlint
、 -Xlint:all
、 -Xlint:rawtypes
),但它们都不起作用。
这是怎么回事?我应该怎么做才能获得 rawtypes
毕竟是警告?
最佳答案
您需要明确设置 showWarnings
为 true
发出第一个警告。这是因为 Maven 默认添加 -nowarn
javac
的选项,它禁用第一个警告。
如果你测试
javac -Xlint -nowarn src/main/java/RawTypes.java
您会看到第一个警告不再发出。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5</version>
<configuration>
<compilerArgument>-Xlint</compilerArgument>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
关于java - -Xlint :rawtypes not working in Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35247099/
当我构建我的项目时,我收到如下错误: [INFO] SomeClass.java: Some input files use or override a deprecated API. [INFO]
我在服务器启动时看到以下 Spring 框架异常 ** > Initialization of bean failed; nested exception is > java.lang.Illegal
scalax -Xlint 帮助提供以下信息: $ scalac -Xlint:help Enable or disable specific warnings adapted-args
我试图从一开始就保持一个非常干净和严格设置的项目,包括: 使用 the Checker Framework . 启用所有编译器警告并将它们视为错误( -Xlint:all 和 -Werror )。 使
这个问题已经有答案了: Java: Array of List (3 个回答) 已关闭 4 年前。 我收到编译错误。 “警告:[未选中]未选中的转换” ArrayList[] regionTroops
在编写了一个很长的 GUI 程序并在 Eclipse 中获得正确的结果之后,最可怕的错误是在终端中运行 seam 程序,并通过看到此错误而感到害怕: Note: ./au/edu/uow/UserIn
这个问题在这里已经有了答案: What causes javac to issue the "uses unchecked or unsafe operations" warning (12 个答案
我想知道使用 -Xlint 编译是否会对构建过程或项目产生一些负面影响? 如果没有,为什么 java 编译器默认没有打开这个功能? 我可以打开所有警告,甚至在构建应用程序的发布版本期间忘记这一点吗?
我的软件构建使用 -Xlint -Werror,所以我经常遇到编译器警告,这些警告会破坏我的构建。每隔一段时间我就会遇到一个需要抑制的警告,但总是很难弄清楚是哪个 Xlint 选项抑制了我看到的警告。
在 NetBeans 中清理和构建我的项目时,有一个警告说“不安全的操作”,所以我使用 -Xlint:unchecked 来查看这些操作,但我不明白我做错了什么。这些是警告,然后是我的代码,谢谢! U
当我有一个覆盖父类(super class)方法但未指定 @Override 注释的类时,我试图让我的 java 构建失败。 构建是通过 ant 完成的,我已将以下元素添加到我的 中任务: un
我正在尝试让 Maven 输出 lint 级别警告。我创建了一个小型测试程序,它应该生成关于从非静态上下文使用静态方法的警告,但是尽管有许多不同的插件配置选项,构建总是成功而没有任何警告! 谷歌搜索后
我已经处理这个问题一个星期了,虽然我找到了一些答案,但似乎没有一个能解决我程序的问题。 我不断收到这条消息: Note: Triangle.java uses unchecked or unsafe
基本上,有2个框架:“StartUpFrame”和“ActivityScreen” StartUpFrame是使用纯 Netbeans GUI 制作的,而ActivityScreen是通过编码而不使用
当我编译我的类时,我收到这些警告: Note: JSONLoader.java uses unchecked or unsafe operations Note: Recompile with -xL
我有一个带有 Maven 编译器插件的 Maven 项目,我想使用 -Xlint:overrides作为 java 编译器的选项,所以我将这一行添加到 maven 编译器插件 -Xlint:overr
我的程序似乎很合我意。但是,当我编译它时,我收到了这条消息: Note: Program.java uses unchecked or unsafe operations. Note: Recompi
我不断在 BlueJ/Java 中收到此消息。 http://cache.gyazo.com/19c325e77bbc120892d1035dcfda5377.png 我知道 StackOverflo
我有这门课,在src/main/java/RawTypes.java : import java.util.*; public class RawTypes { private List raw;
所以当我编译我的 android 应用程序时,我几乎总是会收到这样的消息: [javac] Note: /home/kurtis/sandbox/udj/androidApp/src/org/klnu
我是一名优秀的程序员,十分优秀!