创建jar时不调用属性文件

时间:2013-12-17 07:55:26

标签: java jar

我创建了一个java项目,我在其中使用了一个属性文件,该文件也是在一个名为abcedf的java packgae中创建的

所以包名是abcdef,它包含一个类名abc.java和一个名为drg.properties的属性文件,现在来自类abc.java我将该属性文件称为..

abc tt = new abc();
URL url = tt.getClass().getResource("./drg.properties");
File file = new File(url.getPath());
FileInputStream fileInput = new FileInputStream(file);

现在引用此文件并且我的程序成功运行但是当我尝试使其成为可执行jar时,则此属性文件未被引用 请在创建属性文件时告知出了什么问题。

2 个答案:

答案 0 :(得分:2)

使用

tt.getClass().getResourceAsStream("./drg.properties");

访问JAR中的属性文件。您将获得InputStream作为返回的对象。
---------------------------------------------- ---
以下是将InputStream加载到Properties对象

的示例
InputStream in = tt.getClass().getResourceAsStream("./drg.properties");
Properties properties = new Properties();
properties.load(in); // Loads content into properties object
in.close();

如果你的情况,你可以直接使用,InputStream而不是FileInputStream

答案 1 :(得分:0)

当您访问“jarred”资源时,您无法直接访问它,因为您使用new File()访问HDD上的资源(因为资源在您的驱动器上没有解压缩)但您必须访问资源(使用Class.getResourceAsStream()

存储在您的应用程序jar中

代码看起来像(使用java7 try-with-resource功能)

Properties p = new Properties();
try(InputStream is = tt.getClass().getResourceAsStream("./drg.properties")) { 
 p.load(is); // Loads content into p object
}