【问题标题】:Ant compiler warnings for specific class file特定类文件的 Ant 编译器警告
【发布时间】:2012-11-26 13:43:41
【问题描述】:

我想忽略特定文件引发的来自 ant 的警告。

为什么会有警告不是强制性的,我只想找到一种方法来忽略来自特定类文件的警告。

有没有办法做到这一点?

【问题讨论】:

    标签: java ant compiler-construction compiler-warnings suppress-warnings


    【解决方案1】:
    <target name="compile">
        <mkdir dir="${classes.dir}" />
        <javac
            classpathref="project.classpath"
            bootclasspath="${javac.bootclasspath}"
            compiler="${javac.compiler}"
            debug="${javac.debug}"
            deprecation="${javac.deprecation}"
            destdir="${classes.dir}"
            fork="${javac.fork}"
            memoryMaximumSize="${javac.memoryMaximumSize}"
            nowarn="${javac.nowarn}"
            srcdir="${source.dir}"
            source="${javac.source}"
            target="${javac.target}"
            encoding="UTF-8"
        >
            <compilerarg value="-XDignore.symbol.file"/>
    
        </javac>
    </target>
    

    【讨论】:

      【解决方案2】:

      我认为您的意思是“在运行 Ant 脚本时抑制来自 javac 的编译警告”?

      您没有提供警告示例,但通常您可以查看@SuppressWarnings 注释。可悲的是,JLS 只需要 "unchecked",而所有其他都依赖于实现 - 你可以尝试

      localhost:~$ javac -X
        -Xlint:{all,cast,deprecation,divzero,empty,unchecked,fallthrough,path,
                serial,finally,overrides,-cast,-deprecation,-divzero,-empty,-unchecked,
                -fallthrough,-path,-serial,-finally,-overrides,none}
      

      查看您选择的 JDK 支持的那些。

      编辑:无法以这种方式抑制“内部专有 API”类型的警告,参见。 this Bug ID。但是,对于javac 的(未记录的)-XDignore.symbol.file 命令行选项应该是可能的(参见例如bug 6544224)。

      真正的解决方案当然是不使用这些API...

      干杯,

      【讨论】:

      • 这似乎是正确的方法,但我该怎么做。我可以在导入后在我的班级顶部添加这个:@SuppressWarnings("all") 以抑制所有警告吗?你知道蚂蚁的选择吗?我需要将 -Xlint 设置为特定值吗?
      • ant不关心这些,javac 关心。向我们展示您收到的警告,然后我们将能够提供更好的帮助。
      • 这是警告:[javac] /Users/Jochen/Documents/workspace/MuDiSAR/de/mudisar/dataloader/gui/CustomJFileChooser.java:28:警告:FilePane 是内部专有 API,可能在未来的版本中被删除 [javac] import sun.swing.FilePane;
      • 该特定警告不能@SuppressWarnings'ed。我已经编辑了我的答案。
      【解决方案3】:

      javac ant 任务具有 nowarn 属性以在编译时关闭所有警告。但要使某个特定类的警告静音,您只需修改您的 java 文件。

      来了 http://ant.apache.org/manual/Tasks/javac.html

      【讨论】:

      • 我不知道我必须做什么。我在类文件中需要什么以及在我的 ant 构建文件中需要什么。我知道这个页面,但我无法处理它,所以我来自特定类的警告将被抑制
      【解决方案4】:

      @SuppressWarnings 添加到您的类定义中。示例:

      @SuppressWarnings
      public class MyClass {
      }
      

      您可以通过传递一个字符串参数来抑制特定警告,例如:@SuppressWarnings("unchecked")。有关列表,请参阅What is the list of valid @SuppressWarnings warning names in Java?

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 2010-11-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2011-05-09
      相关资源
      最近更新 更多