我在Eclipse中有以下包结构:
MyProject
|___ src
|___ package1
|___ file.properties
我以两种不同的方式阅读file.properties:
prop.load(getClass().getResourceAsStream("file.properties"));
和
BufferedReader br = new BufferedReader(new FileReader("src/file.properties"))
file.properties可以在runtine中修改,所以当我提供jar文件时,我建议用户在jar文件的同一级创建一个src文件夹并将文件放在其中。 但是,在创建jar之前,我需要在文件路径中具体说明src文件夹:
prop.load(getClass().getResourceAsStream("src/file.properties"));
虽然FileReader调用仍然有效。
如何设置公共文件路径,能够在两种情况下工作(eclipse / development environmente和jar / production environment)?
谢谢
答案 0 :(得分:2)
您可以将外部src
目录添加到JAR清单中的Class-Path
条目。这将使src
目录可以访问getResource()
。
我不知道它在运行时如何改变该目录的内容 - 从未尝试过。
<强> FYI 强>:
Eclipse中的读取文件“偶然”起作用。如果您运行应用程序,Eclipse不会构建整个JAR并使用它。它只将java文件编译为.class
文件并使用它们。整个应用程序仍然在文件系统上作为JAR文件中的普通目录和文件,这就是从文件读取工作的原因。
它不适用于JAR文件(和内部资源),因为您无法直接从JAR(zip)存档中读取文件。如果您以爆炸形式交付应用程序,它将适用于客户端以及它在Eclipse中工作(并且没有其他目录)。