Java 如何在桌面JVM上获得更好的NullPointerException消息?

Java 如何在桌面JVM上获得更好的NullPointerException消息?,java,error-handling,nullpointerexception,runtime-error,Java,Error Handling,Nullpointerexception,Runtime Error,您可能知道,也可能不知道,Android ART虚拟机有一个很棒的特性:即它们准确地告诉您什么是null: java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“ReturnValue Full.qualified.ClassName.andMethod(重载)” net.twisterrob.Test.main(Test.java:19) 将其与标准Oracle桌面JVM进行比较: 线程“main”java.lang.NullPointerExceptio

您可能知道,也可能不知道,Android ART虚拟机有一个很棒的特性:即它们准确地告诉您什么是
null

java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“ReturnValue Full.qualified.ClassName.andMethod(重载)”
net.twisterrob.Test.main(Test.java:19)

将其与标准Oracle桌面JVM进行比较:

线程“main”java.lang.NullPointerException中出现异常
net.twisterrob.Test.main(Test.java:19)


我想知道是否有办法至少在调试时在Oracle JDK中启用此行为,或者是否有其他兼容的JDK/JVM提供此功能。

AFAIK,使用Oracle HotSpot Java无法获得更好的NPE消息

你知道有没有其他虚拟机可能有这个功能?Android虚拟机有,真的Java?好的,没有。这将是不兼容的行为,很可能导致JTK故障。(安卓不在乎这个…)嗯,这很有趣,我没想到一条消息会被认为是这样的,但考虑到it应用程序可能会依赖它并解析它。如果JTK是公开的,你能链接到它吗?我找不到它的任何痕迹,只有“Mines Java Toolkit”,我觉得这里没有相关内容。对不起。我把缩略词弄错了。这是JCK:。很可能存在工具链和应用程序代码,这取决于JVM抛出带有
null
消息的NPE这一事实。自Java1.0以来,它就一直如此。更改此选项将破坏此代码的兼容性。如果有人知道更好的答案,请尝试;)