【问题标题】:Is there a way to force exception message to be English for Java 1.7有没有办法强制异常消息为 Java 1.7 的英语
【发布时间】:2013-06-14 02:32:09
【问题描述】:

我几乎尝试了所有方法,包括:

  1. 将系统区域和语言更改为“美国英语”
  2. 使用 Locale.setDefaultLocale()
  3. 传入 JVM 参数

打印出来:

Default locale is : en_US

但是我的应用程序仍然抛出带有中文异常消息的异常

这和 Spring 有关系吗? (我的应用基于 Spring,但没有与语言环境相关的配置,所以它应该只使用默认值)

谁能帮我解决这个问题?

更新:

我基本上得到了一个java.io.IOException,中文信息相当于

一个现有的连接被远程主机强行关闭

更改语言环境似乎对此没有影响,也许这确实是操作系统级别的事情?

【问题讨论】:

  • 异常从何而来?它是否使用操作系统给它的消息?如果是这样,您需要在操作系统级别更改语言。
  • 多么奇怪。什么样的异常?是来自某个中文图书馆吗?你下载的是中文Java吗?
  • 谢谢大家,这是我从异常中看到的: java.io.IOException: {chinese message here} 中文消息相当于“一个现有的连接被远程主机强行关闭”。我想知道这是否是操作系统级别的事情,就像彼得所说的那样......

标签: java jvm locale multilingual


【解决方案1】:

Throwable.getLocalizedMessage() 可能工作,假设您使用的库提供本地化异常消息。

【讨论】:

  • 我不想要本地化消息,我只想得到原始的英文异常消息
  • 啊。我以为这个库是用中文写的,你得到的是默认的异常消息。
  • 别担心,我更新了原来的问题,希望它现在能提供更多信息
【解决方案2】:

“现有连接被远程主机强制关闭”是标准错误消息from the Windows Sockets library(代码 10054)。

在检索错误代码的错误消息时,FormatMessage 函数的规范表明它将考虑用户或系统区域设置。据我所知,将系统区域和语言设置为英语美国应该这样做。也许中文版的 Windows 没有提供英文消息?

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    相关资源
    最近更新 更多