为什么从jar运行应用程序时new File(path)
不起作用?我应该怎么改变这个?现在,当我的应用程序尝试加载文件时,我收到FileNotFound
异常。
final File file = new File("src/main/resources/maps/ParcelsCountyRDMFinal5.shp");
答案 0 :(得分:2)
如果jar正确创建,比如说使用Maven,资源文件就会出现在类文件旁边。它看起来像这样:
myapp.jar
|
+--- com
| +---mycompany
| +-- FileOpsClass
|
+--- maps
+-- fileToRead
你可以走进目录并访问fileToRead
,就像上面的结构一样:
final File file = new File("../../maps/ParcelsCountyRDMFinal5.shp");
或建议
final File file = new File(getClass().getResource("/maps/ParcelsCountyRDMFinal5.shp"));
答案 1 :(得分:1)
如果它已经在类路径中,你可以这样得到它:
File file = new File(getClass().getResource("Relative_Path_From_This_Class_To_YourFileName").getPath());
答案 2 :(得分:1)
运行eclipse时,当前工作目录设置为项目目录。因此相对路径起作用。由于文件也被压缩到jar中,最好使用InputStream而不是文件。
InputStream in = this.getClass().getResourceAsStream("/resources/maps/ParcelsCountyRDMFinal5.shp");