Java 创建jar时不调用属性文件
我已经创建了一个java项目,在其中我使用了一个属性文件,该文件也是在名为abcedf的java包中创建的 所以包名是abcdef,它由一个类名abc.java和一个名为drg.properties的属性文件组成,现在来自类abc.java,我将该属性文件称为Java 创建jar时不调用属性文件,java,jar,Java,Jar,我已经创建了一个java项目,在其中我使用了一个属性文件,该文件也是在名为abcedf的java包中创建的 所以包名是abcdef,它由一个类名abc.java和一个名为drg.properties的属性文件组成,现在来自类abc.java,我将该属性文件称为 abc tt = new abc(); URL url = tt.getClass().getResource("./drg.properties"); File file = new File(url.getPath()); FileI
abc tt = new abc();
URL url = tt.getClass().getResource("./drg.properties");
File file = new File(url.getPath());
FileInputStream fileInput = new FileInputStream(file);
现在这个文件被引用了,我的程序成功运行了,但是当我试图使它成为可执行的jar时,这个属性文件就没有被引用
请告知创建属性文件时出现的问题。使用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
当您访问“jarred”资源时,您不能直接访问它,因为您使用new File()
访问硬盘上的资源(因为资源不会在驱动器上未压缩),但您必须访问资源(存储在应用程序jar中)使用
代码看起来像(带有java7特性)
使用URL.openStream()而不是新文件()!请使用适当的Java命名约定,以便understand@bellabax请你详细解释一下,好让我能理解。提前谢谢。谢谢,你也能详细解释一下输入流对象吗?我已经编辑了答案,添加了一个例子。如果这有帮助,请接受这个答案。:)
Properties p = new Properties();
try(InputStream is = tt.getClass().getResourceAsStream("./drg.properties")) {
p.load(is); // Loads content into p object
}