技巧积累--Smack、Spark、Openfire

来源:互联网 发布:windows10不兼容软件 编辑:程序博客网 时间:2024/06/16 17:46

研究的并不深入,只是记录下易出的错误以及解决办法


1.spark源码运行出错,如下

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jivesoftware.launcher.Startup.start(Startup.java:94)
at org.jivesoftware.launcher.Startup.main(Startup.java:44)
Caused by: java.lang.NullPointerException
at org.jivesoftware.spark.PluginManager.loadPlugins(PluginManager.java:239)
at org.jivesoftware.Spark.startup(Spark.java:200)
... 6 more
解决办法:
缺少jar包,把build出来(ant编译)的target/lib下的spark.jar拷到项目中,右键Build Path->Add to Build Path可解决问题


2.openfire源码编译错误,这种错误很可能是哪里的路径不对或不存在,可能是VM参数写错了,导致找不到正确的主目录
确保目录正确的情况下,再将错误的地方打断点,一步步调试看路径变量的参数,
我的错误就是有个路径显示是:....\workspace\Openfire\target\openfire\plugins
可是我一看target下只有个log文件夹,可能ant编译的时候出错了,用ant重新编译了一下,解决了


3.出错信息:message from server: "Host is not allowed to connect to this MySQL server"可能是网络访问权限的事

解决办法  参照这个点击打开链接


4.登录Openfire时报错,可以查看是不是openfire.xml的错误
用户名和密码的登录信息都在ofuser表中,可以登录数据库直接查看


5.Openfire编译出错

java.lang.NullPointerException

       at org.jivesoftware.admin.AdminConsole.getAppName(AdminConsole.java:122)

解决办法:需要将admin-sidebar.xml和openfire_i18n_en.properties这2个文件直接放在openfire/bin目录下即可解决这个问题。


6.
connection连接时报错Exception in thread "main" java.lang.NoClassDefFoundError: de/measite/minidns/DNSCache
缺少jar包minidns-0.1.3.jar、jxmpp-core-0.4.1.jar

报错java.lang.NoClassDefFoundError: org/jxmpp/util/XmppStringUtils

缺少smack-core-4.1.0-alpha1-SNAPSHOT.jar、smack-tcp-4.1.0-alpha1-SNAPSHOT.jar、xpp3-1.1.4c.jar包


7.用smack连接openfire时出错
- javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
解决办法:smack4.1.x版本后的连接的配置是
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
                .setUsernameAndPassword("test", "123")
                .setServiceName("jabber.org").setHost("127.0.0.1")
                .setPort(5222)
                .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
                .build();
        AbstractXMPPConnection conn1 =new XMPPTCPConnection(config);


8. 报错 org.kxml2.io.XmlReader但相应的jar包中没有这个类,可能是jar包冲突,将所有的jar包移除,
按需要一个个添加,避免添加不必要的,参照http://sourceforge.net/p/cgupnpjava/discussion/258158/thread/366e7eca#966d

9. 报错SASLError using SCRAM-SHA-1: not-authorized或者

SASLError using SCRAM-SHA-1: not-authorized或者

SASL Authentication failed. No known authentication mechanisims.
这样的错误是认证机制导致的,需要加入smack-sasl-provided-4.1.4.jar包,不行的话还要
SASLAuthentication.blacklistSASLMechanism("SCRAM-SHA-1");或
SASLAuthentication.blacklistSASLMechanism("DIGEST-MD5");先去掉认证机制测试就正常了,报哪个机制的错就将哪个机制加入黑名单

再加一个报错SASLError using DIGEST-MD5: not-authorized:可能的原因是获得connection时service name 有错,或者登陆的用户名和密码不对

10. 报错No response received within reply timeout. Timeout was 5000ms (~5s). Used filter: No filter used or filter was 'null'.

或者报错:

Exception in thread "main" java.lang.NullPointerException
    at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:64)
    at org.jivesoftware.smack.util.stringencoder.Base64.encode(Base64.java:60)
    at org.jivesoftware.smack.util.stringencoder.Base64.encodeToString(Base64.java:42)

原因是缺少jar包,smack-java7-4.1.4.jar包


11.smack传送文件时需要创建文件管理器OutgoingFileTransfer fileTransfer = fileTransferManager.createOutgoingFileTransfer(userJid);

这里的userJid必须是full jid 加上资源来源的jid,不然报错:java.lang.IllegalArgumentException: The provided user id was not fully qualified


0 0
原创粉丝点击