2013-06-24 4 views
-1

У меня есть следующий код java для подключения к cassandra. он дает java.lang.NumberFormatExceptionjava.lang.NumberFormatException

любая идея?

package com.retail; 

import org.apache.cassandra.thrift.*; 
import org.apache.thrift.protocol.*; 
import org.apache.thrift.transport.*; 

import java.lang.*; 

public class ShowKeyspaces { 

public static void main(String args[]) throws Exception { 

    String host = System.getenv("localhost"); 
    int port = Integer.parseInt(System.getenv("9160")); 

    TSocket socket = new TSocket(host,port); 
    TTransport transport = new TFramedTransport(socket); 

    TProtocol proto = new TBinaryProtocol(transport); 
    transport.open(); 

    Cassandra.Client client = new Cassandra.Client(proto); 

    System.out.println("Version: "+client.describe_version()); 
    System.out.println("cluster name : "+client.describe_cluster_name()); 

    transport.close(); 
    } 

} 

Ошибка это дает это:

**Exception in thread "main" java.lang.NumberFormatException: null 
at java.lang.Integer.parseInt(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at com.retail.ShowKeyspaces.main(ShowKeyspaces.java:14)** 

Любая идея, как я должен идти об этом ???

Спасибо!

+0

почему 'INT порт = Integer.parseInt (System.getenv ("+9160"));' и не только 'INT порт = 9160;'? –

+0

, потому что System.getenv принимает только строковый параметр и, сохраняя его в порту, должен иметь целое число. –

+2

Его также почему вы получаете 'java.lang.NumberFormatException', оберните его в try catch для проверки. Использование 'system.getenv' таким образом не имеет смысла, возможно, вам нужно' System.getenv («port») '? –

ответ

2

Вы получаете NumberFormatException из-за этой линии:

int port = Integer.parseInt(System.getenv("9160")); 

Я думаю, что вы не установили как свойство системы и System.getenv("9160") возвращает пустую строку, иначе «». Так как set 9160 as an environment переменная или просто:

int port = 9160; 
+0

Строка «System.getenv (« localhost »);» содержит довольно похожую ошибку. Я бы сказал, что «localhost» должен быть значением некоторой переменной среды, а не переменной. – mschenk74

+0

@ mschenk74 Я согласен с вами, то же самое с 'System.getenv (« 9160 »)'. –