我有一个Java应用程序,我直接从可执行jar文件
在Linux上执行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.jar
log4j-1.2.17.jar
ojdbc7.jar
quartz-2.2.1.jar
slf4j-api-1.7.7.jar
slf4j-log4j12-1.7.7.jar
我想知道slf4j-log4j12-1.7.7.jar
是否会执行某些配置,阻止log4j在查找属性文件时扫描CLASSPATH
。我的代码不包含任何旨在指定属性文件位置的指令。
我还没有尝试执行没有-jar
选项的程序,我会尝试下一步。
到目前为止,这会不会响铃?
答案 0 :(得分:1)
为jvm(log4j.configuration
)添加一个参数。 e.g:
java -cp .:./lib -Dlog4j.configuration=file:log4j.properties -Duser.timezone=GMT ...
您可能希望看到此answer以获取更多选项。