我正在构建需要读取外部属性文件的jar(使用Maven和Spring Boot)。它应该在运行jar的相同目录中(或者在它的相对路径中,如./config.properties
或./conf/config.properties
从jar中读取外部配置文件
现在我可以成功读取资源目录中的嵌入式jar,但是如果我尝试从本地目录中的InputStream将是null
。
我试着加入本地目录.
到classpath(拆包罐子,我可以看到它的类路径条目),但它并没有奏效。
这就是我试过的:
InputStream in = PropertiesLoader.class.getResourceAsStream("config.properties")
InputStream in = PropertiesLoader.class.getResourceAsStream("./config.properties")
InputStream in = PropertiesLoader.class.getClassLoader().getResourceAsStream("./config.properties")
InputStream in = PropertiesLoader.class.getClass().getResourceAsStream("./config.properties")
在我的pom.xml我有这样的条目添加到本地目录添加到类路径:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>bla.bla.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
我也尝试了user.dir
财产,但没有更迭。
这应该是“容易”,但我很迷茫。
cmiiw,你正在尝试从你的jar文件中读取一个与你的jar文件相同的目录吗?如果是的话,那么我猜'新的FileInputStream(“./ file_name.txt”)'应该够用了吗? –
您是否在JAR中使用了'application.properties'文件? JAR之外的'config.properties'文件是否被覆盖? – geoand
@kucing_terbang hm ..我得到了一个FileNotFound .. – Enrichman