首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SmackInitialization:无法确定Smack版本

SmackInitialization:无法确定Smack版本
EN

Stack Overflow用户
提问于 2017-01-27 11:35:36
回答 1查看 1.2K关注 0票数 1

我正在为Unity制作一个android插件,我需要将XMPP集成到Unity中,所以我首先尝试创建XMPP的连接并发送和接收消息。--它在android中运行良好,我可以发送和接收消息,但是当我导出.jar文件并在联合中使用时,我在创建连接时出错了

代码语言:javascript
复制
SmackInitialization: Could not determine Smack version
  java.lang.NullPointerException: lock == null
  at java.io.Reader.<init>(Reader.java:64)
  at java.io.InputStreamReader.<init>(InputStreamReader.java:122)
  at java.io.InputStreamReader.<init>(InputStreamReader.java:57)
  at org.jivesoftware.smack.SmackInitialization.<clinit>(SmackInitialization.java:61)
  at org.jivesoftware.smack.SmackConfiguration.getVersion(SmackConfiguration.java:96)
  at org.jivesoftware.smack.ConnectionConfiguration.<clinit>(ConnectionConfiguration.java:38)
  at com.arvaan.myplugins.ToastExample.connectXMPP(ToastExample.java:99)
  at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
  at com.unity3d.player.UnityPlayer.a(Unknown Source)
  at com.unity3d.player.UnityPlayer$b$1.handleMessage(Unknown Source)
  at android.os.Handler.dispatchMessage(Handler.java:98)
  at android.os.Looper.loop(Looper.java:234)
  at com.unity3d.player.UnityPlayer$b.run(Unknown Source)

我不知道Smack的问题是什么,我是团结的新手,我知道如何在Unity中创建插件和调用方法,但不知道这里有什么问题。

请检查代码:

代码语言:javascript
复制
public class ToastExample extends UnityPlayerActivity implements ConnectionListener, ChatManagerListener, RosterListener, PingFailedListener, StanzaListener, MessageListener, ChatMessageListener {

private static final String TAG = ToastExample.class.getSimpleName();
private AbstractXMPPConnection mConnection = null;
private ChatManager chatManager;
private Chat chat;
private Context context;
private String userName = "";
private String passWord = "";
private String objectName = "";
private static ToastExample instance;

public ToastExample() {
    this.instance = this;
}
public static ToastExample instance() {
    if (instance == null) {
        instance = new ToastExample();
    }
    return instance;
}
public void setContext(Context context) { // This is also working fine
    Log.e(TAG, "setContext called");
    this.context = context;
}
public void showMessage(String message) { // I can able to see toast
    Toast.makeText(this.context, message, Toast.LENGTH_SHORT).show();
}

public void connectXMPP(String host, int port, String userName, String passWord) {
    Log.e(TAG, "_connectXMPP called");
    XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder(); // Here i got error
    configBuilder.setUsernameAndPassword(userName, passWord);
    ...............
    ...............
}

我在插件和统一中使用下面的.Jar文件

代码语言:javascript
复制
smack-core-4.1.4.jar
smack-extensions-4.1.4.jar
smack-im-4.1.4.jar
smack-android-4.1.4.jar
smack-android-extensions-4.1.4.jar
smack-tcp-4.1.4.jar
jxmpp-util-cache-0.4.2.jar
jxmpp-core-0.4.2.jar
jxmpp-jid-0.4.2.jar
jxmpp-stringprep-libidn-0.4.2.jar
minidns-core-0.2.0.jar**

有人也面临着这个问题,但没有找到检查更多

请帮助我解决这个问题,谢谢提前!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-31 06:27:46

由于这里没有人回答我是如何在研发4天后解决的:

  1. 请退出所有类Smack 4.1.1.jar文件和过去在您的应用程序。
  2. 还有另外3个文件: version,smack-config.xml,jul.properties,请将该文件粘贴到应用程序中的Assests文件夹中。
  3. 在Smack包中有一个类: SmackInitialization.java,请替换下面的代码。代码在这里
  4. 完成后,请制作.Jar文件并在您的Unity.检查这里内部使用。

告诉我,如果你有同样的错误,我很高兴在任何时候帮助你解决任何问题。

谢谢

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41893076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档