我从我的蚂蚁脚本中调用javac,如下所示:
<javac srcdir="src"
destdir="build/classes" source="1.6"
target="1.6" debug="true" encoding="Cp1252"
nowarn="true">
但它仍会在输出中抛出编译器警告:
[javac] Compiling 73 source files to C:\IKOfficeRoot\Java\ERP\Framework\build\classes
[javac] C:\IKOfficeRoot\Java\ERP\Framework\src\de\ikoffice\util\LoggerFactory.java:49: warning: sun.reflect.Reflection is Sun proprietary API and may be removed in a future release
[javac] return Logger.getLogger(Reflection.getCallerClass(2));
[javac] ^
[javac] Note: C:\IKOfficeRoot\Java\ERP\Framework\src\de\ikoffice\db\SingleShotResultSet.java uses or overrides a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 1 warning
我也试过
<compilerarg line="-Xlint:-unchecked -Xlint:-deprecation"/>
和
<compilerarg value="-Xlint:none"/>
但这也没有效果。如何删除警告?
答案 0 :(得分:13)
将-XDignore.symbol.file
选项添加到为我工作的javac
命令行。
答案 1 :(得分:4)
执行此操作的最佳方法是使用sunapi
抑制,即-Xlint:-sunapi
用于整个编译,或@SuppressWarnings("sunapi")
在所需范围内。
注意,使用此抑制的唯一方法是首先使用编译器选项-XDenableSunApiLintControl
启用它
答案 2 :(得分:1)
你不能这样做:既不是从命令行,也不是从Ant那里做的。
javac文档说:
-Xlint:无
禁用Java语言规范未强制要求的所有警告。
所以看起来这种警告无法被抑制,因为它们是由JLS直接引发的。
你能做的是:
@SuppressWarnings({"deprecation"}, {"unchecked"})
/dev/null
-Xlint:-unchecked -Xlint:-deprecation
参数从命令行进行编译,这可能只是与Ant相关的问题。答案 3 :(得分:1)
建议:不要忽略编译器的警告。警告是有原因的。我公司的遗留代码库正朝着“将警告视为错误并使构建失败”模式转变,因为我们可以花费精力来修复在编译周期中产生的警告。
在您的情况下,警告是:
warning: sun.reflect.Reflection is Sun proprietary API and may be removed in a future release
一直警告,只要我记得,就不要从sun
软件包导入,因为它们是非公共API。在官方的Oracle Java站点上甚至有一个FAQ。
您尚未发布实际代码,因此很难提供进一步的建议...您在sun.reflect.Reflection
中使用的是java.lang.reflect
中无法通过{{1}}进行的操作?
答案 4 :(得分:1)
使用nowarn属性见下文
e.g。
<javac srcdir="src"
destdir="build/classes" source="1.6"
target="1.6" debug="true" encoding="Cp1252"
nowarn="on">
默认情况下,nowarn属性已关闭
答案 5 :(得分:0)
为防止弃用警告,我尝试使用JDK 6和JDK 7。
使用JDK 7,@Deprecated
注释完成工作
使用JDK 6,它不起作用,添加-Xlint:-deprecation
param也不适用于我。我设法删除警告的唯一方法是使用@deprecated
Javadoc Tag:
/**
* @deprecated
*/
@Override
public void removeValue(String arg0) {
// TODO Auto-generated method stub
}