【发布时间】:2012-11-26 13:43:41
【问题描述】:
我想忽略特定文件引发的来自 ant 的警告。
为什么会有警告不是强制性的,我只想找到一种方法来忽略来自特定类文件的警告。
有没有办法做到这一点?
【问题讨论】:
标签: java ant compiler-construction compiler-warnings suppress-warnings
我想忽略特定文件引发的来自 ant 的警告。
为什么会有警告不是强制性的,我只想找到一种方法来忽略来自特定类文件的警告。
有没有办法做到这一点?
【问题讨论】:
标签: java ant compiler-construction compiler-warnings suppress-warnings
<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>
【讨论】:
我认为您的意思是“在运行 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...
干杯,
【讨论】:
ant不关心这些,javac 关心。向我们展示您收到的警告,然后我们将能够提供更好的帮助。
@SuppressWarnings'ed。我已经编辑了我的答案。
javac ant 任务具有 nowarn 属性以在编译时关闭所有警告。但要使某个特定类的警告静音,您只需修改您的 java 文件。
【讨论】:
将@SuppressWarnings 添加到您的类定义中。示例:
@SuppressWarnings
public class MyClass {
}
您可以通过传递一个字符串参数来抑制特定警告,例如:@SuppressWarnings("unchecked")。有关列表,请参阅What is the list of valid @SuppressWarnings warning names in Java?。
【讨论】: