当我从jar运行我的应用程序时,为什么新文件(路径)不起作用?

时间:2012-02-15 12:12:22

标签: java file jar filenotfoundexception

为什么从jar运行应用程序时new File(path)不起作用?我应该怎么改变这个?现在,当我的应用程序尝试加载文件时,我收到FileNotFound异常。

final File file = new File("src/main/resources/maps/ParcelsCountyRDMFinal5.shp");

3 个答案:

答案 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");