【发布时间】:2014-06-27 09:50:31
【问题描述】:
这听起来像是一个非常简单的问题,但我想不出办法解决这个问题。
我有一个 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.:如果我直接将主机地址作为字符串传递,它可以正常工作(这意味着主机完全可以访问)。
【问题讨论】:
-
您能否将读取的两个属性(字符串和 int)存储在单独的变量中,并将它们记录在屏幕上以便确定?
-
任何空白字符潜入某处?
-
堆栈说你有一个 UnknownHostException;它试图连接到该 IP。你能在没有道具的情况下连接吗?文件?
-
使用
prop.getProperty("IP").trim()并尝试。 -
您可以尝试在记事本中使用您的条目创建一个新文件吗?可能是一些字符编码导致问题。
标签: java string config host jedis