Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建jar时不调用属性文件_Java_Jar - Fatal编程技术网

Java 创建jar时不调用属性文件

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

我已经创建了一个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());
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
}