0

我正在尝试部署一个使用 log4j 的小应用程序。该应用程序部署为一个可执行 jar,其清单包含 Class-Path 属性。
这是通过 Ant jar 任务完成的。这是定义类路径的行

<attribute name="Class-Path" value=" ./ islib  islib/commons-lang-2.0.jar islib/commons-logging-1.0.jar islib/log4j-1.2.16.jar" >

可执行 jar 从 C:/ami/bin 部署和运行。如果 log4j.properties 在 C:/ami/bin/islib 中,则无法找到它,但如果它在 C:/ami/bin 中,则可以找到它。找到 /islib 中的所有其他 jar 并且应用程序正常运行。

清单中的 Class-Path 是否仅为 jar 中的类定义类路径?

4

1 回答 1

1

Classpath 定义了类加载器应该在哪里找到类。

Log4j.properties 不是从 Classpath 中读取的,而是从文件系统中读取的,即相对于程序启动时的当前目录。

(如果你使用 slf4j 作为日志 API,Logback 会在 Classpath 中查找它的配置文件)

于 2013-10-17T16:15:23.643 回答