2017-12-26 7 views
0
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'; 

私は私は、システム変数に追加して、スレーブのIPアドレスを保存して、私は仕事を実行すると、次job.Butに渡ししようとしています例外の下に取得: ログ:Jekins:システムのGroovyスクリプトでjava.lang.NumberFormatException

Slave Machine 2: X.X.X.X 
java.lang.NumberFormatException: For input string: "X.X.X.X" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Integer.parseInt(Integer.java:580) 
    at java.lang.Integer.<init>(Integer.java:867) 

答えて

0

ipaddを整数にキャストすることはできません。これは有効な整数ではないためです。私が見ているように、ipaddを整数にキャストする必要はありません。したがって、私の推奨は、String myString = new Integer(ipadd)行を次の行に置き換えることです。

String myString = new String(ipadd) 
+0

魅力的に機能しました。ありがとう – Angel491

0

アン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); 
} 
関連する問題