Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java -Xlint的问题:all和maven_Java_Maven_Javac_Lint - Fatal编程技术网

Java -Xlint的问题:all和maven

Java -Xlint的问题:all和maven,java,maven,javac,lint,Java,Maven,Javac,Lint,我试图让maven输出lint级别的警告。我已经创建了一个小的测试程序,它应该在非静态上下文中生成关于使用静态方法的警告,但是尽管有许多不同的插件配置选项,构建总是成功的,没有任何警告 在谷歌搜索之后,我找到了使用编译器插件的“compilerArgument(s)”属性的建议,但这似乎对我也不起作用 下面是我的示例程序,它应该生成警告: package com.dahlgren; /** * Test space * */ public clas

我试图让maven输出lint级别的警告。我已经创建了一个小的测试程序,它应该在非静态上下文中生成关于使用静态方法的警告,但是尽管有许多不同的插件配置选项,构建总是成功的,没有任何警告

在谷歌搜索之后,我找到了使用编译器插件的“compilerArgument(s)”属性的建议,但这似乎对我也不起作用

下面是我的示例程序,它应该生成警告:

package com.dahlgren;

    /**
     * Test space
     *
     */
    public class App {
        public static void main( String[] args ) {
            String foo = "foo";
            // I want this to generate a compilation warning
            System.out.println(foo.format("blah"));
        }
    }
这个程序应该发出警告,因为for Java 6 String::format指示只有这个方法的静态版本存在。我特别想抓住这个例子,因为它在过去曾经咬过我,编译器应该会检测到它:-)

这是我的pom文件:


4.0.0
com.dahlgren
JavaScratchSpace
1.0-快照
罐子
JavaScratchSpace
http://maven.apache.org
UTF-8
org.apache.maven.plugins
maven编译器插件
3
1.6
1.6
-Xlint:全部
真的
真的
maven汇编插件
带有依赖项的jar
com.dahlgren.App
包裹
单一的
我尝试了两种形式的compilerArgument属性,但都没用

运行
mvn clean compile
将产生以下输出:

[INFO]正在扫描项目。。。
[信息]
[信息]------------------------------------------------------------------------
[信息]构建JavaScratchSpace 1.0-SNAPSHOT
[信息]------------------------------------------------------------------------
[信息]
[信息]---maven clean插件:2.3:clean(默认清洁)@JavaScratchSpace---
[信息]删除文件集:/work/fun/JavaScratchSpace/target(包括:[**],不包括:[**])
[信息]
[信息]---maven资源插件:2.3:resources(默认资源)@JavaScratchSpace---
[信息]使用“UTF-8”编码复制筛选的资源。
[信息]跳过不存在的resourceDirectory/work/fun/JavaScratchSpace/src/main/resources
[信息]
[信息]---maven编译器插件:3.0:compile(默认编译)@JavaScratchSpace---
[信息]检测到更改-重新编译模块!
[INFO]将1个源文件编译为/work/fun/JavaScratchSpace/target/classes
[信息]------------------------------------------------------------------------
[信息]建立成功
[信息]------------------------------------------------------------------------
[信息]总时间:2.716s
[信息]完成时间:2013年3月12日星期二11:39:21 PDT
[信息]最终内存:8M/150M
[信息]------------------------------------------------------------------------
其他版本信息:

$mvn-version&&javac-version
ApacheMaven 3.0.4
Maven home:/usr/share/Maven
Java版本:1.6.0_24,供应商:Sun Microsystems Inc。
Java主页:/usr/lib/jvm/Java-6-openjdk-amd64/jre
默认区域设置:en_US,平台编码:UTF-8
操作系统名称:“linux”,版本:“3.2.0-29-generic”,arch:“amd64”,系列:“unix”
JavaC1.6.0_24
这是你的资料来源的“适合我”

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.buck</groupId>
  <artifactId>mavenproject3</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>mavenproject3</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
          <compilerArgument>-Xlint:all</compilerArgument>
          <showWarnings>true</showWarnings>
          <showDeprecation>true</showDeprecation>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
还有我的环境

Apache Maven 3.0.4 (r1232337; 2012-01-17 02:44:56-0600)
Maven home: C:\Program Files\NetBeans 7.2.1\java\maven
Java version: 1.7.0_07, vendor: Oracle Corporation
Java home: C:\Program Files (x86)\Java\jdk1.7.0_07\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"

也许您遇到了平台特定的bug?

使用您发布的方法,编译器插件似乎将嵌套的xml标记解释为实际的编译器参数。Maven输出如下:“未能在项目JavaScratchSpace上执行目标org.apache.Maven.plugins:Maven编译器插件:3.0:compile(默认编译):致命错误编译:无效标志:-compilerArgument”-这是在使用“-Xlint:all”时-可能我使用的版本具有不同的语义?我已经指定了maven编译器插件版本3。0@RonDahlgren对不起,我意识到我真的把最初的答案弄糟了,希望编辑后的答案对你有用。好像一直都是我的javac!看起来openjdk没有正确捕获这种静态方法用法。您发布的pom工作正常,我的javac只是选择忽略它。通过直接使用“javac-Xlint:all App.java”进行验证。谢谢你的帮助@RonDahlgren很高兴能帮你找到问题的根源。1.6.0_24有点老了。今天达到了1.6.0_43,我记得在1.6.0_18和1.6.0_26之间,有很多打嗝,因为它们融入了一些让我一时难以忘怀的东西。当时没有什么重大的节目能阻止bug,但很多小东西都从盘子里掉了下来。对于maven编译器插件3.2版(可能在之前),compilerArguments不受欢迎。使用编译器args()。
Compiling 1 source file to C:\Users\edwbuck\Documents\NetBeansProjects\mavenproject3\target\classes
bootstrap class path not set in conjunction with -source 1.6
com/buck/mavenproject3/App.java:[12,35] static method should be qualified by type name, java.lang.String, instead of by an expression
Apache Maven 3.0.4 (r1232337; 2012-01-17 02:44:56-0600)
Maven home: C:\Program Files\NetBeans 7.2.1\java\maven
Java version: 1.7.0_07, vendor: Oracle Corporation
Java home: C:\Program Files (x86)\Java\jdk1.7.0_07\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"