我正在使用sun.misc.BASE64Encoder包中的encode()方法。如何抑制它生成的编译器警告?
sun.misc.BASE64Encoder是Sun的专有API,可能会在未来删除。
作为后续问题,为什么我在Eclipse中看不到这个警告?
我正在使用sun.misc.BASE64Encoder包中的encode()方法。如何抑制它生成的编译器警告?
sun.misc.BASE64Encoder是Sun的专有API,可能会在未来删除。
作为后续问题,为什么我在Eclipse中看不到这个警告?
有一种完全未记录的方法可以抑制Sun专有API警告!
在javac
命令行中添加-XDignore.symbol.file
。
我在https://bugs.java.com/bugdatabase/view_bug?bug_id=6476630找到了这个方法(滚动到最后一条评论)。我们都应该对“xfournet”心怀感激,他添加了最后一条评论!
@SuppressWarnings("all")
、-nowarn
、-Xlint:none
或 -Xmaxwarns 0
来关闭它。如果你依赖于内部类,你的程序迟早会出问题。但当你知道自己在做什么的时候,这是一个好用的技巧,因为专有 API 警告只是噪音干扰控制台。谢谢! - Boann首选项 → Java → 编译器 → 错误/警告 → 弃用和受限API → 禁止/不推荐引用
(项目属性页面允许对此设置进行项目特定的覆盖)
pom.xml
文件中感兴趣:<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<compilerArgument>-XDignore.symbol.file</compilerArgument>
</configuration>
</plugin>
您无法关闭它们,Eclipse只是为您过滤它们(如果被告知这样做)。
Linux的快速临时解决方案:
javac *.java 2>&1 | pcregrep -v -M ".*Sun proprietary API.*\n.*\n.*\^"
2>&1将标准错误输出放入标准输出中,这样管道“|”将可以正常工作。
pcregrep可能存在于您的系统上,也可能不存在 - 如果不存在,请使用软件包实用程序(例如,在Debian、Ubuntu等上:“sudo apt-get install pcregrep”)
该表达式搜索“Sun专有API”警告和接下来的两行(包含该行以及“^”表示该行中错误位置)。
我在最后保留了“XY warnings.”一行,以免忘记有警告;o) 请注意,如果您还有其他警告,那么报告的数字当然不正确:o)
还要注意,标准的“grep”无法跨越多行工作,因此不能很好地处理该问题。
java.util.Base64
将调用封装在一个类中,然后将该类放置在库JAR中,并将其放置在您的类路径上。这样,只有在重新编译该库时才会显示警告。