【发布时间】:2016-08-23 19:01:48
【问题描述】:
如果我运行以下代码
public class NetworkTester {
public static void main( String[] args ) {
System.setProperty( "java.net.preferIPv6Addresses", "true" );
System.setProperty( "java.net.preferIPv4Stack", "false" );
try {
InetAddress addr = InetAddress.getByName( "www.google.com" );
System.out.println( addr );
if ( addr instanceof Inet4Address ) {
System.out.println( 4 );
}
if ( addr instanceof Inet6Address ) {
System.out.println( 6 );
}
} catch ( UnknownHostException e ) {
e.printStackTrace();
}
}}
我得到以下输出
www.google.com/2607:f8b0:4009:801:0:0:0:2004
6
但是,如果我添加该行
private static Logger log4j = LogManager.getLogger();
我导入以下内容
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
我明白了
www.google.com/4.59.40.94
4
我正在使用 log4j2 2.6.2 和 jdk1.8.0_51。如果我使用 -Djava.net.preferIPv6Addresses=true 作为 vm 参数,我会得到一个 IPv6 地址。但是我正在开发的应用程序是作为可执行 jar 文件运行的,我无法找到一种方法来让可执行 jar 运行 vm 参数,而无需编写某种 bat 文件或脚本。
如何让我的应用程序更喜欢 ipv6 并运行 log4j?
【问题讨论】:
标签: java logging java-8 log4j2 system-properties