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

如何在Java中通过运行命令选项设置对应的字符串变量

实现支持命令行切换语言的Java程序方案

1. 修正参数传递格式

你示例中给出的命令参数位置错误,JVM会将类名/源文件路径之前的参数识别为JVM标准选项,直接运行会抛出Unrecognized option: --language=english的报错。
有两种合法的传参方案可选:

  • 方案1(推荐,程序入参形式):将自定义参数放到源文件/主类声明之后
    命令示例:java ClassName.java --language="english"
    打jar包后运行示例:java -jar yourApp.jar --language="english"
  • 方案2(系统属性形式):用JVM标准的-D参数传递自定义配置
    命令示例:java -Dlanguage="english" ClassName.java

2. 最简实现示例(单文件+内置国际化能力)

我们用Java原生的ResourceBundle做国际化配置,无需引入第三方依赖即可实现多语言切换。

第一步:新建语言资源文件

和你的ClassName.java放在同一目录下,分别创建两个配置文件:

  • messages_zh_CN.properties(中文文案)
    greeting=你好,程序运行成功
    tip=当前使用的是中文语言
    
  • messages_en_US.properties(英文文案)
    greeting=Hello, program runs successfully
    tip=Current language is English
    

第二步:主类代码实现

import java.util.Locale;
import java.util.ResourceBundle;

public class ClassName {
    public static void main(String[] args) {
        // 默认使用中文
        String targetLang = "chinese";

        // 如果是用方案1的程序入参形式,用下面的逻辑解析参数
        for (String arg : args) {
            if (arg.startsWith("--language=")) {
                targetLang = arg.split("=", 2)[1].replace("\"", "").trim();
                break;
            }
        }

        // 如果是用方案2的系统属性形式,替换上面的解析逻辑为下面这行即可
        // String targetLang = System.getProperty("language", "chinese");

        // 加载对应语言的资源包
        Locale locale = "english".equalsIgnoreCase(targetLang) ? Locale.US : Locale.CHINA;
        ResourceBundle langBundle = ResourceBundle.getBundle("messages", locale);

        // 测试输出多语言文案
        System.out.println(langBundle.getString("greeting"));
        System.out.println(langBundle.getString("tip"));
    }
}

3. 运行测试

  • 中文运行命令:java ClassName.java --language="chinese"
    输出:
    你好,程序运行成功
    当前使用的是中文语言
    
  • 英文运行命令:java ClassName.java --language="english"
    输出:
    Hello, program runs successfully
    Current language is English
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:18:03