我有一个目录 /release/ 包含我的 application.jar 以及 log4j2.xml 文件。当我运行应用程序时 java -jar application.jar 它不会获取 log4j2.xml 配置文件。如果我像这样明确指定 xml 文件的位置,它就会起作用

java -Dlog4j.configurationFile=log4j2.xml -jar application.jar

有没有一种方法可以指示我的程序始终从 jar 所在的同一目录中获取配置文件?我想让程序尽可能简单,并且不要求用户在运行应用程序时设置尴尬的系统属性。

有帮助吗?

解决方案

如果没有系统属性,log4j-2.0 将在类路径中查找 log4j2.xml 文件。所以我将你的问题读作:我怎样才能启动我的应用程序 java -jar application.jar 类路径中有 log4j2.xml 文件吗?

这取决于您的 application.jar 文件是否有 Class-Path 其清单中的条目(http://docs.oracle.com/javase/8/docs/technotes/tools/windows/findingclasses.html#sthref8 ).

当然,您可以简单地将 log4j2.xml 文件包含在 application.jar 文件中。如果您想避免这种情况,可以将包含 log4j2.xml 文件的目录添加到 Class-Path JAR 文件清单中的条目。(这可能是“.”当前目录。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top