Java 如何在jar清单类路径中为属性文件指定目录?

Java 如何在jar清单类路径中为属性文件指定目录?,java,jar,classpath,manifest,Java,Jar,Classpath,Manifest,我想将我的可执行jar需要的所有.properties文件放在运行jar文件的目录之外的子目录中。目前,my MANIFEST.MF的外观如下所示: Manifest-Version: 1.0 Build-Jdk: 1.6.0_26 Main-Class: MyMainClass Class-Path: . conf lib/dependency1.jar 如果我将.properties文件保存在与jar文件相同的目录中,那么一切都可以正常工作。如果我将它们移动到conf子目录,则找不到它们。

我想将我的可执行jar需要的所有.properties文件放在运行jar文件的目录之外的子目录中。目前,my MANIFEST.MF的外观如下所示:

Manifest-Version: 1.0
Build-Jdk: 1.6.0_26
Main-Class: MyMainClass
Class-Path: . conf lib/dependency1.jar
如果我将.properties文件保存在与jar文件相同的目录中,那么一切都可以正常工作。如果我将它们移动到
conf
子目录,则找不到它们。我还尝试直接指定.properties文件的路径,例如
conf/log4j.properties

我想做的事可能吗

更新:以下是我的可执行jar中失败的代码示例:

InputStream stream = getClass().getClassLoader().getResourceAsStream("myproperties.properties");
myproperties.properties
位于
conf
子目录中时,此语句返回空InputStream。当
log4j.properties
位于
conf
子目录中时,它输出关于找不到其配置的警告消息:

log4j:WARN No appenders could be found for logger (MyMainClass).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

尝试使用
org.apache.log4j.PropertyConfigurator.configure(字符串configFilename)

这可用于指定日志文件的位置

这里有一个例子:

谁在加载属性文件?那个可执行的罐子?或者
dependency1.jar
?具体如何?更新了问题中有关失败的更多详细信息。您真的需要将它们放在不同的运行位置,还是这更多是关于将它们组织在开发层次结构中的不同源文件夹中?是的,这是关于运行时的位置。不过,这与其说是需要,不如说是需要;)