gpt4 book ai didi

java - Log4j2 导致 PreferIP6 失败

转载 作者:行者123 更新时间:2023-11-30 10:39:57 25 4
gpt4 key购买 nike

如果我运行下面的代码

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?

最佳答案

您是否尝试过在初始化静态 Logger 字段之前向设置属性的主类添加静态初始化程序 block ?

static {
System.setProperty("java.net.preferIPv6Addresses", "true");
}

关于java - Log4j2 导致 PreferIP6 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39108836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com