【发布时间】:2011-07-01 19:37:16
【问题描述】:
我正在使用 Smack API 开发多用户游戏客户端。 我的 smack 应用程序有问题:我可以向服务器发送消息和请求,但我的应用程序无法读取它的响应。
Exception in thread "Smack Packet Reader (0)" java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.jivesoftware.smack.provider.ProviderManager.initialize(ProviderManager.java :193)
at org.jivesoftware.smack.provider.ProviderManager.<init>(ProviderManager.java:436 )
at org.jivesoftware.smack.provider.ProviderManager.getInstance(ProviderManager.jav a:134)
at org.jivesoftware.smack.util.PacketParserUtils.parseIQ(PacketParserUtils.java:30 3)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:229)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:43)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:70)
Caused by: java.lang.NullPointerException
at java.util.TimeZone.parseCustomTimeZone(TimeZone.java:767)
at java.util.TimeZone.getTimeZone(TimeZone.java:471)
at java.util.TimeZone.getTimeZone(TimeZone.java:465)
at org.jivesoftware.smackx.workgroup.packet.TranscriptsProvider.<clinit>(Transcrip tsProvider.java:44)
... 9 more
No response from the server.:
这不是网络(防火墙、nat...)问题(在同一子网中的另一台 Macintosh 上,相同的代码运行良好,没有例外)。我检查了我的 MacOS 防火墙,它似乎没问题...我可以做些什么来解决这个问题? 我不知道这个问题是否取决于 java 或 Smack ... 提前致谢。
【问题讨论】:
-
您可以将
null传递给parseCustomTimeZone吗? -
没问题。我没有使用过 Smack,但我经常从 Java 库中看到这些异常,因为方法假设传入了非空参数。最简单的测试方法是尝试使用
null直接调用它。 -
感谢您的回复。这是不可能的,因为我不使用这种方法……也许 Smack 在 API 的某个地方使用了这种方法,但这是一个奇怪的问题,因为相同的代码在另一台计算机上运行良好。
-
你是说不能试试
class MyTest{public static void main(String[] args){java.util.TimeZone.parseCustomTimeZone(null);}}?我不能,因为我没有使用 Java 7。 -
哦,对不起...我不明白你的要求!明天早上(在意大利这里现在很晚:))我会尝试使用这种方法,我会在这里发布结果。无论如何,我正在使用 java 1.6.0_24