我使用了两个属性文件:log4j.properties
和myapp.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之外引用它们? 谢谢!
答案 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" ) ) );