System Groovy脚本中的java.lang.NumberFormatException

时间:2017-12-26 07:46:21

标签: java jenkins groovy dsl

order_status

我试图通过将其添加到System变量并将其传递给下一个job来保存slave的ip地址。但是当我运行这个作业时,我遇到了异常: 日志:

def ipadd = addr.hostAddress
//println ipadd
String myString = new Integer(ipadd);
def pa = new ParametersAction([new StringParameterValue('IPADDR', myString)]);  
Thread.currentThread().executable.addAction(pa) 
println 'Script finished! \n';

2 个答案:

答案 0 :(得分:1)

IPv4地址中包含3个点,因此无法直接将其解析为Integer

我想你试图将它转换为代表IP 32位的相应int。这可以用Java完成:

public static int ipToInt32(String ip) {
    Inet4Address ipAddress;
    try {
        ipAddress = (Inet4Address) InetAddress.getByName(ip);
    } catch (UnknownHostException e) {
        throw new IllegalStateException("Cannot convert IP to bits: '" + ip + "'", e);
    }
    byte[] ipBytes = ipAddress.getAddress();
    return ((ipBytes[0] & 0xFF) << 24)
            | ((ipBytes[1] & 0xFF) << 16)
            | ((ipBytes[2] & 0xFF) << 8)
            | (ipBytes[3] & 0xFF);
}

答案 1 :(得分:0)

您无法将ipadd强制转换为整数。因为它不是有效的整数。我认为没有强制要求你将ipadd强制转换为整数。因此,我的建议是用以下行替换行String myString = new Integer(ipadd)

String myString = new String(ipadd)