如何引用可执行jar和Eclipse中的属性文件?

时间:2011-10-07 14:37:54

标签: java executable-jar

我使用了两个属性文件:log4j.propertiesmyapp.properties。我想在Eclipse和可执行jar中执行我的应用程序时正确加载它们。

ATM文件存储在此处:/src/configs/*.properties。我用我的代码在这行中引用它们:

config = new PropertiesConfiguration(getClass().getResource("/configs/myapp.properties"));

如果我在Eclipse中执行我的应用程序,这很有用,但如果我执行(来自eclipse生成的)可执行jar,则会失败。我在/META-INF/中创建了一个清单文件,并将此行写入其中:

Class-Path: .

要实现,执行jar仍然会失败:-(我在哪里必须放置我的属性文件,我该如何引用它们?

如果我执行jar并且在我的项目中,如果我在Eclipse中,是否也可以在jar之外引用它们? 谢谢!

2 个答案:

答案 0 :(得分:1)

您尝试加载属性文件的方式对我来说很好。您是否检查过属性文件是否实际上是生成的jar文件的一部分?

答案 1 :(得分:0)

通常在没有重建jar的情况下部署/修改属性文件,例如环境/外部资源特定的东西,因此它们是分开存储的。

但是如果您需要将它们保留在内部,请确保(在您的情况下)“configs / myapp.properties”实际上处于JAR的根级别。只是解开你创建的那个罐子,看看那里有什么。或者你可以运行:

jar -tvf your.jar | grep myapp.properties

查看JAR中的实际路径而不会将其取消。

如果有,可以通过classloader加载,如下所示:

ClassLoader cl = YourClass.class.getClassLoader()

config = new PropertiesConfiguration( cl.getResourceAsStream( "configs/myapp.properties" ) ) );
相关问题