Исключение Smack - вызвано моей установкой Java или Smack - PullRequest
1 голос
/ 01 июля 2011

Я использую 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 ... Заранее спасибо.

1 Ответ

1 голос
/ 02 июля 2011

Это скорее продолжение комментариев, а не полный ответ (но, надеюсь, это поможет).

В исходном коде java строка с ошибкой гласит zi.setID("GMT+00:00");. ZI имеет тип sun.util.calendar.ZoneInfo. Это может означать только, что zi равно null. Далее это создается следующим образом:

zi = ZoneInfoFile.getZoneInfo("GMT");

Итак, я написал следующую небольшую тестовую программу:

class Foobar {
    public static void main(String[] args) {
        sun.util.calendar.ZoneInfo zi = sun.util.calendar.ZoneInfoFile.getZoneInfo("GMT");
        zi.setID("GMT+00:00:00");
    }
}

Я не получил ни NullPointerException, ни каких-либо других исключений. Возможно, вы могли бы запустить ту же тестовую программу и посмотреть, что произойдет. Я думаю, что это не удастся для вас. Это может указывать на потерянную установку Java.

...