文件未找到异常,仅在将代码包含为maven依赖项时

时间:2015-11-06 01:01:02

标签: java maven

我写过这个项目,在config/文件夹中有一堆配置文件,这些是运行所必需的: https://github.com/danyaljj/jwnl-prime/

代码在我的计算机和CI mvn test下工作正常。

但是在打包并将其作为maven依赖项添加到另一个项目之后,函数调用会给我错误

java.io.FileNotFoundException: config/file_properties.xml (No such file or directory)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at net.didion.jwnl.TestDefaults.getInputStream(TestDefaults.java:63)
        at net.didion.jwnl.JWNL.initialize(JWNL.java:92)

我知道为什么会出现这种奇怪的行为?

更新: 在解压缩jar文件之后,事实证明配置文件不包含在jar中: enter image description here

Update2:添加建议后?配置文件包含在jar文件中: enter image description here

但仍然遇到同样的错误:config/file_properties.xml (No such file or directory)

2 个答案:

答案 0 :(得分:3)

如果项目结构不是标准格式,则还需要更新pom.xml。如果您需要包含构建配置,则需要在构建部分中添加该配置,如

参考链接enter link description here

&#13;
&#13;
<build>
    <extensions>
      <extension>
		<groupId>org.apache.maven.wagon</groupId>
		<artifactId>wagon-ssh</artifactId>
		<version>2.4</version>
	  </extension>
    </extensions>
    <resources>
        <resource>
             <directory>config</directory>
             <includes>
                 <include>**/**</include>
             </includes>
        </resource>
    </resources>
</build>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

首先,验证配置文件是否实际打包到jar中。我会在存档查看器中查看它或解压缩它,看看它里面有什么。

其次,您不能使用标准文件打开方法直接从jar加载文件。你必须使用像

这样的东西
Class.getResourceAsStream() 

请点击此处获取更多建议: How do I access a config file inside the jar?