这可能听起来像一个非常简单的问题,但我无法找到解决这个问题的方法。
我有一个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。:如果我直接将主机地址作为字符串传递,它可以正常工作(这意味着主机完全可以访问)。
答案 0 :(得分:0)
java.net.UnknownHostException: "192.168.1.40"
^ ^
恕我直言这个双引号不应该存在,因为Exception
将String
作为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("\"","")