Windows 10 将Windows 10上的Java 9设置为日本地区和语言时,IOException消息未正确打印

Windows 10 将Windows 10上的Java 9设置为日本地区和语言时,IOException消息未正确打印,windows-10,locale,ioexception,java-9,cjk,Windows 10,Locale,Ioexception,Java 9,Cjk,在此特定块中引发异常 try { transport.m_readListener.onReadTransport(transport); } catch (IOException e) { ->onIOException(e,transport); } 方法将其放在日志中: private void onIOException(IOException e, AbstractConnection connection

在此特定块中引发异常

   try
   {
       transport.m_readListener.onReadTransport(transport);
   }
   catch (IOException e)
   {
       ->onIOException(e,transport);
   }
方法将其放在日志中:

    private void onIOException(IOException e, AbstractConnection connection)
    {
        String reason = e.getMessage();
        ...
        log.error("Closing ",connection," because ",reason);
    }
Java 8中的原因变量显示了正确的日语短语:

原因:既存の接続はリモート ホストに強制的に切断されました (意思是:现有连接被强制断开与远程主机的连接)

在Java 9上运行时,异常消息现在已断开:

原因:譌「蟄倥?ョ謗・邯壹?ッ繝ェ繝「繝シ繝? 繝帙せ繝医↓蠑キ蛻カ逧?縺ォ蛻?譁ュ縺輔l縺セ縺励◆縲

检查套接字端口是否仍然打开的代码块位于捕获IOException的try-catch块内。来自IOException的消息是通过

    String reason = e.getMessage();
    if (null == reason) reason = e.toString();

尝试使用java.locale.providers=COMPAT、CLDR、SPI运行该应用程序,使其与Java8中的行为类似,但什么也没有发生。有人对这个问题有想法吗?有人能帮忙吗?谢谢

你能用一段代码来更新这个问题吗?你能用堆栈跟踪来更新这个问题吗?我无法从问题中判断问题是否是异常消息或它是如何打印到控制台的。问题是它打印到控制台的方式。在java 8上,即使Windows处于日本语言环境并设置为日语,IOException消息也会以日语正确打印。但是,是否向用户报告异常消息文本存在疑问: