【发布时间】:2014-09-26 14:23:00
【问题描述】:
我有一个 Java 应用程序,我在 Linux 上直接从可执行 jar 文件执行
java -cp .:./lib -Duser.timezone=GMT -Dlog4j.debug -jar programName.jar
该程序使用了许多其他的 jar 文件,它们都在一个目录中,还有 4 个属性文件都在另一个目录(当前目录)中。这两个目录都包含在CLASSPATH 中。
够简单了吧。
除了 Log4j 找不到 log4j.properties 之外,它会是。我设法让它找到log4j.properties 的唯一方法是将它包含在programName.jar 中
这不是我想要的,我想让它使用 log4j.properties 与所有其他属性文件位于同一目录中,它们位于 CLASSPATH 中,并且可以按照您的预期找到。
正在使用的其他 jar 文件有:
jdom-2.0.5.jarlog4j-1.2.17.jarojdbc7.jarquartz-2.2.1.jarslf4j-api-1.7.7.jarslf4j-log4j12-1.7.7.jar
我想知道slf4j-log4j12-1.7.7.jar 是否做了一些配置来阻止log4j 在查找属性文件时扫描CLASSPATH。我的代码不包含任何旨在指定属性文件位置的指令。
我还没有尝试在没有-jar 选项的情况下执行程序,接下来我会尝试。
到目前为止,这是否敲响了警钟?
【问题讨论】:
标签: java properties log4j executable-jar