3

我有一个基本的 cmd 程序,它调用一个 jar,该 jar 有一个带有 main 方法的 Install 类。Install 类使用其资源文件夹中的 java.util.logging.config.file。

private static void setupLogging() {
    if (System.getProperty("java.util.logging.config.file") == null) {
        final InputStream inputStream = Install.class.getResourceAsStream("/logging.properties");
        try {
            LogManager.getLogManager().readConfiguration(inputStream);
        } catch (final IOException e) {
            Logger.getAnonymousLogger().severe("Could not load default logging.properties file");
            Logger.getAnonymousLogger().severe(e.getMessage());
        }
    }
}

这个安装程序属于不同的项目,我不应该改变它。但是我想从我的磁盘中使用一个单独的 logging.properties 文件(最好来自我拥有 cmd 程序的同一个文件夹)。如何强制此安装程序使用我的 logging.properties 文件,而不是资源文件夹中的默认文件?有没有办法我可以强制这样做?

4

1 回答 1

1

你可以试试这个:

String yourFilePath = "./yourLogProperties.properties";
LogManager.getLogManager().readConfiguration(new FileInputStream(yourFilePath);

属性将从存储在执行应用程序的同一文件夹中的文件中加载。

更新:

我正在搜索如何通过命令行传递属性,这里有一个很好的解释。所以,在你的情况下,你需要这样的东西:

java -jar -Djava.util.logging.config.file="./yourLogProperties.properties" YourApp.jar

您还可以测试它是否可以进行简单的测试:

public class Tests {    
    public static void main(String[] args) {
        System.out.println(System.getProperty("java.util.logging.config.file"));
    }    
}

从命令行运行这个你应该得到答案./yourLogProperties.properties

于 2013-07-11T19:43:01.090 回答