为什么嵌入式文件在可执行jar文件中找不到异常?

时间:2016-06-23 11:27:35

标签: java file-io classpath embedded-resource

在运行时,src / main / resources目录中有更新我的交换机配置的二进制文件。当我在eclipse中使用调试模式尝试它时文件存在且没有问题,但是当我为实际应用程序创建可执行jar文件时,该文件不存在。

问题出在哪里?

String filePath  = new File("/resources/firmwares/myConfigFile.bin").getAbsolutePath();

File f = new File(filePath);
    if (f.exists()) 
            upload();

1 个答案:

答案 0 :(得分:0)

假设您正在使用Maven,并且您添加了资源插件,因此在maven构建期间,它会将您的资源复制到目标目录,然后在打包期间它也将打包它们

创建JAR后,您需要使用其他方法来访问您的文件,因为现在您的文件已打包在JAR文件中

要访问位于JAR文件内的文件,请使用:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("firmwares/myConfigFile.bin");

或者

URL url = this.getClass().getClassLoader().findResource("firmwares/myConfigFile.bin");
相关问题