首页 > 解决方案 > java.lang.NumberFormatException:对于输入字符串“v2.6.5.2”

问题描述

我正在使用 java 实现 RPC(JSON) 系统,但在回答其中一个调用时遇到错误。

SperoCoin.java

1 package com.l2spero.gameserver.handler.voicedcommandhandlers;
2    public class SperoCoin
3    {
4       public NpcHtmlMessage nhm = new NpcHtmlMessage(5);
5       public TextBuilder replyMSG = new TextBuilder("");
6       
7       public String address = "127.0.0.1";
8       public int port = 55681;
9       public String protocol = "http";
10      public String user = "user";
11      public String password = "password";
12      
13      BitcoindApi api = BitcoindApiFactory.createConnection(address, port, protocol, user, password);
14    
15      
16      public void getInfo(String[] args) throws BitcoindConnector4JException
17      {
18          try {
19              Info info = api.getinfo();
20              BlockchainInfo getblockchaininfo = api.getblockchaininfo();
21              
22                  replyMSG.append("<html><title>SPEROCOIN WALLET</title><body>");
23                  replyMSG.append("<font color=\"FFFF00\"><center>L2SPERO WALLET</center></font>");
24                  replyMSG.append("<font color=\"FFFF00\"><center>Version:" + info.getVersion() + "</center></font>");
25                  replyMSG.append("<font color=\"FFFF00\"><center>Protocol Version:" + info.getProtocolversion() + "</center></font>");
26                  replyMSG.append("<font color=\"FFFF00\"><center>Wallet Version:" + info.getWalletversion() + "</center></font>");
27                  replyMSG.append("<font color=\"FFFF00\"><center>Chain:" + getblockchaininfo.getChain() + "</center></font>");
28                  replyMSG.append("<font color=\"FFFF00\"><center>Blocks:" + info.getBlocks() + "</center></font>");
29                  replyMSG.append("</body></html>");
30                  
31          }catch (Exception e) {
32              e.printStackTrace();
33          }
34      }
35    }

上面的文件显示了我在 JAVA 应用程序中需要的文本,但是第 24 行,当我运行命令时出现错误:

读取失败:[C] 38 Say2 ;java.lang.NumberFormatException:对于输入字符串:“v2.6.5.2:Beta 2.6.5.2”com.l2spero.sperocoin.core.BitcoindConnector4JException:java.lang.NumberFormatException:对于输入字符串:“v2.6.5.2:Beta 2.6.5.2"

在外部应用程序内部进行调用并以 JSON 格式返回结果的 Info.java 文件是这样的:

package com.l2spero.sperocoin.response;

public class Info extends BaseResponse {

    private Double balance;
    private long blocks;
    private long connections;
    private Double difficulty;
    private String errors;
    private long keypoololdest;
    private long keypoolsize;
    private Double paytxfee;
    private long protocolversion;
    private String proxy;
    private Double relayfee;
    private boolean testnet;
    private long timeoffset;
    private long version;
    private long walletversion;

    public Double getBalance() {
        return balance;
    }

    public void setBalance(Double balance) {
        this.balance = balance;
    }

    public long getBlocks() {
        return blocks;
    }

    public void setBlocks(long blocks) {
        this.blocks = blocks;
    }

    public long getConnections() {
        return connections;
    }

    public void setConnections(long connections) {
        this.connections = connections;
    }

    public Double getDifficulty() {
        return difficulty;
    }

    public void setDifficulty(Double difficulty) {
        this.difficulty = difficulty;
    }

    public String getErrors() {
        return errors;
    }

    public void setErrors(String errors) {
        this.errors = errors;
    }

    public long getKeypoololdest() {
        return keypoololdest;
    }

    public void setKeypoololdest(long keypoololdest) {
        this.keypoololdest = keypoololdest;
    }

    public long getKeypoolsize() {
        return keypoolsize;
    }

    public void setKeypoolsize(long keypoolsize) {
        this.keypoolsize = keypoolsize;
    }

    public Double getPaytxfee() {
        return paytxfee;
    }

    public void setPaytxfee(Double paytxfee) {
        this.paytxfee = paytxfee;
    }

    public long getProtocolversion() {
        return protocolversion;
    }

    public void setProtocolversion(long protocolversion) {
        this.protocolversion = protocolversion;
    }

    public String getProxy() {
        return proxy;
    }

    public void setProxy(String proxy) {
        this.proxy = proxy;
    }

    public Double getRelayfee() {
        return relayfee;
    }

    public void setRelayfee(Double relayfee) {
        this.relayfee = relayfee;
    }

    public boolean getTestnet() {
        return testnet;
    }

    public void setTestnet(boolean testnet) {
        this.testnet = testnet;
    }

    public long getTimeoffset() {
        return timeoffset;
    }

    public void setTimeoffset(long timeoffset) {
        this.timeoffset = timeoffset;
    }

    public long getVersion() {
        return version;
    }

    public void setVersion(long version) {
        this.version = version;
    }

    public long getWalletversion() {
        return walletversion;
    }

    public void setWalletversion(long walletversion) {
        this.walletversion = walletversion;
    }

    @Override
    public String toString() {
        return "GetInfo [balance=" + balance + ", blocks=" + blocks + ", connections=" + connections + ", difficulty="
                + difficulty + ", errors=" + errors + ", keypoololdest=" + keypoololdest + ", keypoolsize="
                + keypoolsize + ", paytxfee=" + paytxfee + ", protocolversion=" + protocolversion + ", proxy=" + proxy
                + ", relayfee=" + relayfee + ", testnet=" + testnet + ", timeoffset=" + timeoffset + ", version="
                + version + ", walletversion=" + walletversion + "]";
    }

}

源应用程序中 JSON 的返回是这样的:

{
"version" : "v2.6.5.2: Beta 2.6.5.2",
"protocolversion" : 700004,
"walletversion" : 60000,
"balance" : 0.00000000,
"newmint" : 0.00000000,
"stake" : 0.00000000,
"blocks" : 1326067,
"timeoffset" : -1,
"moneysupply" : 194143.36538519,
"connections" : 4,
"proxy" : "",
"ip" : "0.0.0.0",
"difficulty" : {
"proof-of-work" : 0.00277217,
"proof-of-stake" : 0.00024414
},
"testnet" : false,
"keypoololdest" : 1613136757,
"keypoolsize" : 101,
"paytxfee" : 0.00000000,
"mininput" : 0.00000000,
"isunlocked" : true,
"unlocked_until" : 0,
"errors" : ""
}

标签: java

解决方案


Info 类中的字段很长

但在 json 中它是 String

所以我认为你需要将java类中的版本类型更改为字符串


推荐阅读