【问题标题】:Default locale is reported incorrectly by non-standard Java installation非标准 Java 安装错误地报告了默认语言环境
【发布时间】:2020-08-06 00:58:00
【问题描述】:

使用已安装的JDK版本时,默认系统语言环境报告正确,但是当我使用adoptopenjdk-11tar.gz时,总是报告为en_US

import java.util.Locale;

public class CurrentLocale {
    public static void main(String... args) {
        System.out.println("Default locale " + Locale.getDefault());
    }
}

这里是 adoptopenjdk11 的 Homebrew 安装示例与下载和解压缩的示例。

/usr/bin/java CurrentLocale
Default locale ja_JP

~/Downloads/jdk-11.0.8+10/Contents/Home/bin/java CurrentLocale
Default locale en_US

此处显示了每个 JDK 的版本。

# adoptopenjdk-11 (brew cask install adoptopenjdk11)

/usr/bin/java -version
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.8+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.8+10, mixed mode)

# adoptopenjdk-11 (Downloaded from https://adoptopenjdk.net/releases.html?variant=openjdk11&jvmVariant=openj9)

~/Downloads/jdk-11.0.8+10/Contents/Home/bin/java -version
openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.8+10)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.21.0, JRE 11 Mac OS X amd64-64-Bit Compressed References 20200715_677 (JIT enabled, AOT enabled)
OpenJ9   - 34cf4c075
OMR      - 113e54219
JCL      - 95bb504fbb based on jdk-11.0.8+10)

我猜 macOS 有一些魔力,因为符号链接到 /usr/bin/java 的 Java 二进制文件始终存在,无论是否安装了 Java。

/usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

Hotspot (Oracle) 版本工作正常,但 openj9 (IBM) 版本不工作。

我需要将安装程序中的 JRE 与应用程序捆绑在一起,并将其安装到非标准位置。

如何在下载的 openj9 tar 中获取默认语言环境来镜像当前系统的语言环境?

【问题讨论】:

    标签: java locale jvm-hotspot openj9


    【解决方案1】:

    【讨论】:

    • 正确。事实上,这个问题似乎只是从那里复制的。
    • 这确实解释了 openj9 中的语言问题,但不能解释为什么相同版本在安装时有效,而从存档中提取时无效。如何判断更改修复了哪个 Java 版本? 2019年5月修复合并,2020年构建Java openj9 11.0.8+10,总之还是有些迷茫。
    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多