访问可执行jar中的属性文件

时间:2016-04-06 07:39:28

标签: java eclipse jar executable-jar

我的目标是从Eclipse创建一个可执行jar。我有一个Eclipse项目,可以运行下面的结构。

我的Eclipse项目

src/main/java
-com.main
      ->MyClass

src/main/resources
 ->MyProps.properties

MyClass能够成功访问MyProps.properties文件。

导出Eclipse项目并创建一个可运行的jar后,我的jar结构如下所示。

MyJar.jar

-com.main
  ->MyClass

-resources
 ->MyProps.properties

当我运行jar文件时,它无法访问抛出NullPointerExeception的属性文件。

我的代码

InputStream input = MyClass.class.getClassLoader()
                           .getResourceAsStream("resources/MyProps.properties");

当我将项目导出为可执行jar文件时,我再也无法访问MyProps.properties

有人能帮助我吗?

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码读取类路径上的属性文件:

background: #fff url('http://www.htmlcodetutorial.com/document/paper.gif') repeat scroll left top;

答案 1 :(得分:0)

在onder中从jar加载文件。您必须使用Class.getResource()Class.getResourceAsStream()

URL properties = ConfigLoaderTest.class.getResource("/resources/MyProps.properties");

这将从类路径加载文件,thius意味着它也会查看类路径中的jar(可执行jar自动在您的类路径中)。 第一个' /'表示从类路径上的jar的根目录开始,您在代码中省略了这一点。

您可以像任何URL一样读取该URL(如果没有找到,它将返回null)。立即使用properties.openStream()

请注意,您似乎正在使用默认的maven结构src/main/resources,但是您的eclipse构建路径上有src/main,因此在您的jar中,您将获得resources目录。 maven项目的正常情况是在构建路径上有src/main/resources。这会将您的属性文件放在jar的根目录中。