You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何jpackage打包的macOS Java应用菜单不使用系统定义语言

问题根因

  1. Oracle JDK 9发布时间远早于Apple Silicon芯片面世时间,没有对M1架构做原生适配,在M1设备上运行时依赖Rosetta 2转译执行,转译过程中JDK读取系统语言偏好的系统API调用存在兼容性缺陷,无法正确识别到法语为首选语言,会直接fallback到默认英文。
  2. macOS Big Sur 11.x针对Apple Silicon设备调整了应用本地化资源的读取逻辑,相较于Intel架构上的Catalina系统规则更严格:仅配置CFBundleDevelopmentRegion无法触发语言匹配,必须同时存在对应语言的.lproj资源目录,你当前的应用包缺少fr.lproj目录,因此在M1+Big Sur的组合下无法生效,而Catalina对该规则校验更宽松,所以Intel设备运行正常。

解决方案

  • 优先升级打包使用的JDK版本到JDK 17及以上,这是首个原生支持Apple Silicon的长期支持版本,内置的jpackage工具已经修复了大量macOS本地化适配问题,原生运行无需Rosetta转译,可正确读取系统语言配置完成菜单翻译。
  • 若必须保留JDK 9作为打包环境,可在jpackage生成的.app包的Contents/Resources目录下手动创建空的fr.lproj文件夹,重新对应用签名后即可适配Big Sur的本地化匹配规则。
  • 也可在应用的启动参数中添加强制本地化配置:-Duser.language=fr -Duser.region=FR,绕开JDK读取系统语言的兼容性问题,强制JVM加载法语资源。

内容的提问来源于stack exchange,提问作者jtraulle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:27:03