属性文件中的字符串主机名:Java

时间:2014-06-27 09:50:31

标签: java string config host jedis

这可能听起来像一个非常简单的问题,但我无法找到解决这个问题的方法。

我有一个config.properties文件,其中包含两个键值:IP地址和端口号。我读了这个配置文件,以字符串格式提取键值。但是,当我尝试使用这些值时,我无法连接到从配置文件中检索到的IP地址。

原因是读取的值是字符串格式,我需要在使用它们之前将它们转换为正确的格式。我想要的是价值" 192.168.1.40"存储在配置文件中的转换为String host格式。我尝试使用InetAddress,但这会产生错误。 配置文件的内容是:

IP=192.168.1.40
PORT=9124

使用这些值的代码如下:

Properties prop = new Properties();
String propFileName = "...//testJedis//resources//config.properties";        
prop.load(new FileInputStream(propFileName));//testJedis/resources/config.properties"));// configStream);

Jedis jedis=new Jedis(prop.getProperty("IP"),Integer.parseInt(prop.getProperty("PORT")));
//Jedis jedis = new Jedis("192.168.1.40",9124);

我获得的错误堆栈如下:

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.UnknownHostException: "192.168.1.40"
at redis.clients.jedis.Connection.connect(Connection.java:150)
at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:71)
at redis.clients.jedis.Connection.sendCommand(Connection.java:92)
at redis.clients.jedis.BinaryClient.ping(BinaryClient.java:84)
at redis.clients.jedis.BinaryJedis.ping(BinaryJedis.java:65)
at TestJedis.main(TestJedis.java:43)
Caused by: java.net.UnknownHostException: "192.168.1.40"
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at redis.clients.jedis.Connection.connect(Connection.java:144)
... 5 more

可以找到jedis类的文档here

P.S。:如果我直接将主机地址作为字符串传递,它可以正常工作(这意味着主机完全可以访问)。

1 个答案:

答案 0 :(得分:0)

java.net.UnknownHostException: "192.168.1.40"
                               ^            ^

恕我直言这个双引号不应该存在,因为ExceptionString作为hostName的参数,这是未知的。 这个Exception的唯一原因可能是您实际上在hostName中传递了双引号。

应为java.net.UnknownHostException: 192.168.12<--If host is unknown

来自评论

  

IP返回为&#34; 192.168.1.40&#34; (打印出来的)当我打印它们时   在屏幕上

这仅仅意味着您的String IP="\"192.168.1.40\""而不是String IP="192.168.1.40" 从配置文件中删除双引号。

我无法重现此问题,但您可以使用replace

String ip=prop.getProperty("IP").replace("\"","")