2013-04-09 73 views
2

我开始使用asmack for Android来补充我已经构建的Java即时消息传递应用程序。经过一段时间,获取ClassNotFound异常和错误,找到我的服务器(尽管地址和端口是正确的),我读了关于建议初始化静态类的SmackAndroid调用。 我编码,如下所示:SmackAndroid.init()抛出IllegalStateException异常:“无法初始化静态类块”

Context context = getApplicationContext(); 
SmackAndroid asmk = SmackAndroid.init(context); 

我addded的几行代码,以我的应用程序建立任何XMPP连接之前就但它完全是给了我一个新的错误,我解决不了。

java.lang.RuntimeException: Unable to start activity ComponentInfo{cit.jordan.portablechatter/cit.jordan.portablechatter.MainActivity}: java.lang.IllegalStateException: Could not init static class blocks

我使用asmack 0.8.2罐子这里找到Android的17:http://asmack.freakempire.de/

回答

0

唯一的例外是在InitStaticCode.java:48抛出,我得到了来自其他用户的类似的报告。我总是想知道为什么它适用于大多数用户但只有少数用户。

您可以尝试删除InitStaticCode.java:34中的getClass()调用并查看它是否有效。另一个想法是,如果你无法自己修改和构建aSmack,将会改变你使用的上下文类型作为参数:试验getApplicationContext()getBaseContext。也许这有帮助。

我输入为aSmack's issue # 33。也许我会在这个周末找到解决的时间。

+0

感谢您的回复。我已经尝试过使用不同的应用程序上下文,都提供相同的错误。我尝试了一些其他方法无济于事。 SmackAndroid调用是否有任何解决方法?是否可以在程序中手动初始化这些类? – Joe 2013-04-10 17:57:34

+1

不,但考虑到aSmack是开放源代码的事实,您可以复制代码并尝试不带'getClass()'的InitStaticCode。一些用户报告说,这可以解决他们的问题。 – Flow 2013-04-10 18:59:29

+0

它花了一段时间,但我今天尝试了你的建议,我设法绕过这个问题。推荐的AndroidConnectionConfiguration调用反复给了我DNS错误,所以我不得不使用标准的ConnectionConfiguration调用。目前正试图弄清楚为什么客户端在服务器的活动客户端会话中显示,但被标记为脱机并且不能与其他客户端交互。尽管如此,这可能是一个不同的问题。 – Joe 2013-04-11 18:00:55

1

我也遇到了同样的问题。 然后我找到了如下的解决方案。

先下载以下jar latest asmack jar

SmackAndroid.init(context); 
AndroidConnectionConfiguration mAndroidConnectionConfiguration=new AndroidConnectionConfiguration(host, port); 

我认为这将解决您的连接问题。 以上方法适合我,所以我希望它对你有帮助。

相关问题