java.lang.NumberFormatException: Invalid long: "null"

黄业滨 发布于 2015/12/22 11:56
阅读 3K+
收藏 0
12-21 21:59:50.822: W/AbstractXMPPConnection(5312):     java.lang.NumberFormatException: Invalid long: "null"
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at java.lang.Long.invalidLong(Long.java:125)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at java.lang.Long.parseLong(Long.java:342)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at java.lang.Long.parseLong(Long.java:319)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smackx.bytestreams.ibb.provider.DataPacketProvider$PacketExtensionProvider.parse(DataPacketProvider.java:56)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smackx.bytestreams.ibb.provider.DataPacketProvider$PacketExtensionProvider.parse(DataPacketProvider.java:49)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.provider.Provider.parse(Provider.java:35)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.util.PacketParserUtils.parseExtensionElement(PacketParserUtils.java:929)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.util.PacketParserUtils.addExtensionElement(PacketParserUtils.java:1060)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.util.PacketParserUtils.parseMessage(PacketParserUtils.java:287)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.util.PacketParserUtils.parseStanza(PacketParserUtils.java:151)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.AbstractXMPPConnection.parseAndProcessStanza(AbstractXMPPConnection.java:956)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$500(XMPPTCPConnection.java:140)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:989)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:944)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:959)
12-21 21:59:50.822: W/AbstractXMPPConnection(5312): at java.lang.Thread.run(Thread.java:841)

加载中
0
刘泓
刘泓
看不到代码...无解...
0
酷酷的就
酷酷的就

java.lang.NumberFormatException: Invalid long: "null"  

再看异常里哪一行是你的代码的, 就是那个啦. 

0
黄业滨
黄业滨

没有提示我写的代码哪一行有问题 提示的是 源码里的

public class DataPacketProvider {


    public static class IQProvider extends org.jivesoftware.smack.provider.IQProvider<Data> {


        private static final PacketExtensionProvider packetExtensionProvider = new PacketExtensionProvider();


        @Override
        public Data parse(XmlPullParser parser, int initialDepth)
                        throws XmlPullParserException, IOException,
                        SmackException {
            DataPacketExtension data = packetExtensionProvider.parse(parser);
            Data iq = new Data(data);
            return iq;
        }
    }


    public static class PacketExtensionProvider extends org.jivesoftware.smack.provider.ExtensionElementProvider<DataPacketExtension> {


        @Override
        public DataPacketExtension parse(XmlPullParser parser,
                        int initialDepth) throws XmlPullParserException,
                        IOException {
            String sessionID = parser.getAttributeValue("", "sid");
            long seq = Long.parseLong(parser.getAttributeValue("", "seq"));
            String data = parser.nextText();
            return new DataPacketExtension(sessionID, seq, data);
        }


    }
}


 long seq = Long.parseLong(parser.getAttributeValue("", "seq"));这样行代码 类型转换错误  但是我不明白我哪里触发这句代码了 我是接收消息的时候报错的

0
漫画三毛
漫画三毛

parser.getAttributeValue("", "seq")

可考虑打印出来看看!看看是否为null

黄业滨
黄业滨
这个是源码里的 怎么打印 我用的是jar不能改源码
0
黄业滨
黄业滨
<message xmlns="jabber:client" type="chat" 
id="ebd6b4a3-0c72-4856-8625-a57600b53b92" 
to="2c843b9f-ed19-40c2-99b4-a54500f97205@hyb.cn">
<body>wwwwwwwwwwwwww</body>
<active xmlns="http://jabber.org/protocol/chatstates" />
<ext xmlns="ihelper:chat:text">
<orderID>09791ae4-7e5d-4d0f-9483-a56200a31e6e</orderID>

</ext></message>


这个是我接收的消息的格式

0
Eric_林
Eric_林

你有个变量是Long类型的,传入参数的时候写了null,检查你的代码就好,改成传0

应该就这里了

long seq = Long.parseLong(parser.getAttributeValue("", "seq"));

parser.getAttributeValue("", "seq"),取出来为null

Sel8616
Sel8616
回复 @黄业滨 : 从java.lang.NumberFormatException: Invalid long: "null" 可以看出来,是将字符串解析为长整型时出的错,具体错误已经很清楚了————null无法解析为long
Eric_林
Eric_林
回复 @黄业滨 : 检查parser.getAttributeValue("", "seq")
黄业滨
黄业滨
这个是我接收消息的时候报错的 没有提示我那个代码错
0
Sel8616
Sel8616

显然就是long seq = Long.parseLong(parser.getAttributeValue("", "seq"));

上面这句,你getAttributeValue得到的值是null

判空是最基本的编程功底,请认真检查自己的代码,所有对象引用,凡是可能为null的,都要用if(xx!=null)或try/catch语句处理

0
南湖船老大
南湖船老大
楼主咋就不开窍呢 人家都说的很清楚了 。。
0
分流砥柱
分流砥柱
不开窍就难办了,硬伤!
黄业滨
黄业滨
那个转换在源码里 没有提示我写的哪句代码有问题
0
So丶Love
So丶Love

String value=parser.getAttributeValue("", "seq");

long seq=-1;//赋一个不可能会转化出的值

if(value!=null&&!value.equals("")&&!value.toLowerCase().equals("null")){

seq = Long.parseLong(value);

}


So丶Love
So丶Love
回复 @黄业滨 : 再要么就是你接收的那个消息格式和这个jar包要求的不一样,你再改下你消息格式呗
So丶Love
So丶Love
回复 @黄业滨 : 你改不了代码,那你就在哪块用的时候catch住这个代码,抛出异常时候进行下处理不就完了么
黄业滨
黄业滨
这个代码是 jar中的代码 我无法修改
返回顶部
顶部