Java 是否可以在启动.jar时加载不同的配置文件?

Java 是否可以在启动.jar时加载不同的配置文件?,java,jar,console,Java,Jar,Console,我的问题是关于.jar文件的。在我的项目中,我使用json配置文件,它加载在我的.jar文件中。我可以使用不同的配置文件吗?我有一个使用服务器/客户机套接字的项目,我知道我会有很多客户机,我不想为每个配置文件创建很多client.jar,我想使用一个主client.jar并通过不同的配置文件运行它 如果您不理解,我将尝试用示例进行解释: 也许可以做个定制的旗子什么的 java -jar -config Client.jar example/foo/config.json java -jar -c

我的问题是关于.jar文件的。在我的项目中,我使用json配置文件,它加载在我的.jar文件中。我可以使用不同的配置文件吗?我有一个使用服务器/客户机套接字的项目,我知道我会有很多客户机,我不想为每个配置文件创建很多client.jar,我想使用一个主client.jar并通过不同的配置文件运行它

如果您不理解,我将尝试用示例进行解释:

也许可以做个定制的旗子什么的

java -jar -config Client.jar example/foo/config.json
java -jar -config Client.jar example/foo/config2.json
等等。。。我想有人会帮我的……)

这里有两个选项:

  • 将文件名作为参数传递
  • 将其作为系统属性传递
  • 备选案文1:

    您可以这样运行您的jar:

    java -jar Client.jar example/foo/config.json
    
    java -Dconfig=example/foo/config.json -jar Client.jar
    
    并在
    main(String[]args)
    方法的第一个参数中获取文件名

    备选案文2:

    您可以这样运行您的jar:

    java -jar Client.jar example/foo/config.json
    
    java -Dconfig=example/foo/config.json -jar Client.jar
    
    您可以通过调用
    System.getProperty(“config”)
    来获取文件名


    第二种方法的优点是让文件名在程序中的任何位置都可用,而第一种方法只在主方法中可用。

    如何读取配置文件?@MauricePerry我正在代码中加载它,但是我需要以某种方式重写,让它以我上面所说的另一种方式阅读..例如使用环境变量.好的,这就是我一直在寻找的,但是。。第一个选项,如果我将这样运行,我可以稍后运行如下配置文件:java-jar Client.jar example/foo/config.json:java-jar Client.jar example/foo/config2.json吗?我将如何获得文件名?@Ervinas34在args[0]中,在您的主要方法中,非常感谢!我的问题100%准确!将您的答案标记为有效!:)