在对我的程序进行更改后,此错误随机开始。 Netbeans不会显示任何错误。
我在Netbeans 8.2中遇到随机错误,在此之前通常可以通过删除缓存来解决,但我已经删除了缓存,重新启动了Netbeans,但仍然遇到相同的错误。
我进行了一次清理,但仍无济于事。
程序运行了。我仍然可以编译它并在单独的计算机上运行它,但是Netbeans不断给我这个错误:
Exception in thread "main" java.lang.NullPointerException
at rss.RSSFeedParser.main(RSSFeedParser.java:157)
....\NetBeans\Cache\8.2\executor-snippets \run.xml:53: Java returned: 1
BUILD FAILED (total time: 3 seconds)
run.xml第53行
<java classpath="${classpath-translated}" classname="${classname}" dir="${work.dir}" jvm="${platform.java}" fork="true" failonerror="${java.failonerror}">
更新: 我在尝试捕获时捕获到“ NumberFormatException”。 Netbeans之前对此没有抛出任何错误,直到突然之间。我将其更改为“异常”。该程序运行正常,但是我有Netbeans的建议将其更改回“ NumberFormatException”。这里有什么?我认为只要捕获到必需的例外,就不会有问题。
答案 0 :(得分:0)
您发布的堆栈跟踪显示157
文件的第RSSFeedParser.java
行有错误。您的IDE不会将此行突出显示为错误的行,因为您的代码没有任何语法或编译时问题。
String[] split = msEndpoint.getTcpPorts().split(",");
由于split(String)
对象的String
方法将返回String
个数组,依此类推,因此该代码将被编译,这是“有效的”。
实际上出了什么问题是msEndpoint
是null
,或者msEndpoint.getTcpPorts()
返回了null
,所以java最终试图在{{1}上调用方法},然后抛出null
。 (有关here的更多信息。)
您的IDE可能无法在程序运行之前弄清楚程序运行时可能引发的所有错误。但是它可以显示编译时错误。 (有关差异here的更多信息。)
尝试打印出NullPointerException
的值,然后打印msEndpoint
行上方的msEndpoint.getTcpPorts()
的值:
String[] split = .....
查看其中哪一个的值为if(...) {
try {
System.out.println(msEndpoint);
System.out.println(msEndpoint.getTcpPorts());
String[] split = msEndpoint.getTcpPorts.split(",");
...
}
}
。