2013-04-09 89 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); 

我認爲這將解決您的連接問題。 以上方法適合我,所以我希望它對你有幫助。

相關問題