运行jar文件时逐步设置类路径的问题

时间:2010-11-06 06:34:53

标签: java jar classpath

我有A.JAR中包含的应用程序。这个jar有几个依赖项,因此它们在清单中被指定为“lib / B.JAR lib / C.JAR lib / D.JAR”。我有A.JAR的安装目录,在它下面我有另外三个的lib目录。

我转到我的安装目录并运行“java -jar A.JAR”来运行该应用程序,它开始运行。但是,它会查找log4j.properties来设置log4j。据我所知,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”也没有帮助。

1 个答案:

答案 0 :(得分:4)

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

某个目录中文件的一个简单示例是:

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

有关详细信息,请查看documentation。特别要检查默认初始化过程部分。