2010-11-06 132 views
0

我有一个包含在A.JAR中的应用程序。这个jar有几个依赖关系,所以它们在清单中被指定为“lib/B.JAR lib/C.JAR lib/D.JAR”。我有我的安装目录A.JAR,在它下面我有lib目录与其他三个。运行jar文件时增量设置类路径的问题

我进入我的安装目录并运行“java -jar A.JAR”来运行应用程序,并开始运行。但是,它会查找用于设置log4j的log4j.properties。现在据我所知,log4j.properties需要在类路径中。

现在让我们假设我想运行几个A.JAR实例,但是具有各种log4j属性。所以我设置了4个安装目录(inst1,inst2,...),并且我已经将A.JAR,一个自定义的log4j.properties和lib目录放入其中。

  1. 这是正确的路要走(忘记复制本身,我可以用符号链接来做到这一点)?也许有办法告诉log4j在运行时使用一些define(-D)来查找特定位置的属性?
  2. 如果我所描述的是一个好的设置,我该如何运行它? Java不会“捕捉”log4j.properties作为其类路径的一部分。运行“java -classpath。-jar A.JAR”也没有帮助。

回答

4

您可以使用log4j.configuration系统属性定义您希望log4j使用的属性文件。

在某些目录中的文件一个简单的例子是:

java -Dlog4j.configuration=file:/c:/foobar.properties YOUR CLASS PATH -jar JAR FILE 

欲了解更多信息,请检查documentation。特别是检查默认初始化程序部分。

+0

也看看-Dlog4j.debug开关。知道它在哪里寻找是非常有用的。 – mschonaker 2010-11-06 06:59:54

+0

+1 - 这是正确的方法,尽管OP可能需要创建一些包装脚本来启动具有不同日志配置的应用程序。 – 2010-11-06 07:02:06

+0

@Faisel - 谢谢,我会用它。 – 2010-11-06 09:49:27