我正在尝试在我的izpack安装程序中获取IP地址。我使用了$ {IP_ADDRESS}变量,但我得到了本地" 127.0.0.1"地址而不是计算机的公共IP。这是预期的功能吗?这对我来说似乎没用,但我一定错过了什么。我怎样才能获得公共IP?
izpack:v5.0.3 java:1.7.0_79 Ubuntu:15.04
感谢。
答案 0 :(得分:0)
看起来,$ {IP_ADDRESS}被视为(部分来自IzPack安装程序源):
InetAddress localHost = InetAddress.getLocalHost();
IPAddress = localHost.getHostAddress();
hostname = localHost.getHostName();
所以,问题是,在大多数情况下,InetAddress.getLocalHost()返回本地主机地址。
如果你需要确定你的公共IP,那就不那么容易了,就像拿到你的localhost的地址一样。您必须遍历network interfaces,获取他们的地址并确定您需要的地址。如果您不需要在业务代码中执行此操作,那么这是很常见的情况,但您需要在安装程序中使用它。
据我所知,可以制作自己的jar文件并在安装程序中使用它,也许你应该尝试制作自己的ligic,这决定了这个公共ip,并从你的IzPack安装程序调用。