我想知道是否有人可以帮我理解这段代码可能出错的地方;基本上我正在编写一个教程并从另一个类调用下面的类 - 它收到以下错误;
线程“Thread-1”中的异常java.lang.NullPointerException 在org.newdawn.spaceinvaders.TCPChat.run(TCPChat.java:322) 在java.lang.Thread.run(未知来源)
我意识到错误是在另一个类中标记的 - 但是我已经测试了另一个类,其中一个小类设置了一个单独的线程 - 它工作正常,但是一旦我尝试在这个中实现一个新线程class - 它会导致各种各样的问题。我在这个课程中正确设置了线程吗?
基本上我可以在这个类中设置一个线程,带有一个测试循环并且很好,但是当我引入游戏其余部分的功能时,它有时会挂起,或根本不显示。
非常感谢任何有关我可能出错的建议。
感谢您的光临。
答案 0 :(得分:3)
org.newdawn.spaceinvaders.TCPChat.run上的java.lang.NullPointerException(TCPChat.java:322)
打开TCPChat.java
源文件,查看第322行,并在此特定行中查看,其中使用点运算符.
来访问某些对象引用。类似的东西:
someObject.doSomething();
此行上的NullPointerException
表示someObject
为null
。您无法访问或调用 nothing 。要解决此类问题,您需要确保此时someObject
不为空:
if (someObject == null) {
someObject = new SomeObject();
}
someObject.doSomething();
或者,您需要在null
:
if (someObject != null) {
someObject.doSomething();
}
顺便说一下没有与线程有关。这只是一个编程错误,与其他RuntimeException
一样。
答案 1 :(得分:2)
NullPointerException
是最常见的例外,很容易识别。它出现在许多情况下(在链接的javadoc中列出),但最常见的是在null
对象上调用方法。例如,如果你有:
String str = null;
str.substring(2,4); // str is null and NullPointerException is thrown
所以转到stacktrace(TCPChat.java:322)指示的代码行,检查是否有一个null
对象,调用哪些方法。如果有,请确保它们不是null
,或者创建一个if
语句来检查是否if (obj != null)
,以便不执行代码。
更新:似乎connectButton
为null
。在致电开始线程之前,您必须致电initOptionsPane()
。
答案 2 :(得分:1)
关于这个问题的标题:线程表现正常。这是你在线程中的代码不是;)