Findbugs 给出“System.out 的空指针取消引用”,为什么?
我正在使用 Java 1.7、Eclipse 3.7 以及市场上的 FindBugs 插件。这个例子就像天堂一样好:
class Application
{
public static void main( String[] args )
{
System.out.println( "Bla" );
}
}
这个消息在过去不存在,内部实现总是在系统中:
public final static PrintStream out = null;
所以Findbugs是正确的,但是现在出现这个消息有什么变化吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
因为在java 6中它看起来像这样:
所以我猜他们在java 7中简化了它并向编译器添加了一些异常。
JVM 管理本机代码中的 out、in 和 err,因此它给出的错误消息是毫无意义的。
Because in java 6 it looked like this:
so I guess they simplified it in java 7 and added some exceptions to the compiler.
JVM manages out, in, and err in native code, so this error message it gives is pointless.
这被标记为错误 在 Findbugs 1.3.9 中。它已针对 Findbugs 2.0 进行修复,并且可能会向后移植。
This is marked as a bug in Findbugs 1.3.9. It has been fixed for Findbugs 2.0, and might be backported.
只有openjdk才会出现这种情况,sun jdk不会出现这种情况。
该问题是 2010 年发布的一个补丁,允许系统时间早于 1970 年。
http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-July/009869.html
This only happens with openjdk, not the sun jdk.
The problem is a patch posted in 2010 to allow system times older than 1970.
http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-July/009869.html