Java相对路径在程序文件中找不到文件,但在桌面上找到它

Java相对路径在程序文件中找不到文件,但在桌面上找到它,java,windows,file,Java,Windows,File,尝试使用相对路径打开文件时,我遇到IOException。我已经将项目编译成一个jar,并且我想要加载的文件位于项目根目录中的“images”目录中 我没有得到一个例外,当我把我的项目文件夹放在我的桌面上时,我能够看到这个文件。但是,如果我放置文件夹并尝试在C:\Program files(x86)\MyApplication中运行应用程序,则会出现异常。这是防火墙/权限问题吗?我不明白为什么它可以在桌面上工作,但不能在程序文件中工作 我的项目的目录结构: MyApplication.jar

尝试使用相对路径打开文件时,我遇到IOException。我已经将项目编译成一个jar,并且我想要加载的文件位于项目根目录中的“images”目录中

我没有得到一个例外,当我把我的项目文件夹放在我的桌面上时,我能够看到这个文件。但是,如果我放置文件夹并尝试在C:\Program files(x86)\MyApplication中运行应用程序,则会出现异常。这是防火墙/权限问题吗?我不明白为什么它可以在桌面上工作,但不能在程序文件中工作

我的项目的目录结构:

  • MyApplication.jar

  • 图像

这导致了异常:

BufferedImage image = ImageIO.read(new file("images/myimage.jpg"));

(我尝试了前后斜杠)

相对路径是相对于当前工作目录(不一定是jar文件的位置)解析的。你到底是如何运行这个应用程序的?你能添加一些代码吗?我记得当我把代码编译成jar时遇到了类似的问题。它找不到任何图像,甚至认为它们与代码一起打包到了jar中。它与jar中的manifest文件有关。希望这至少为你指明了正确的方向,不过我没有把图像打包到罐子里。images目录在jar之外。即使如此,它也无法解释为什么它在桌面上工作,而不是在“程序文件”之类的文件夹中工作。相对路径是相对于当前工作目录(不一定是jar文件的位置)解析的。你到底是如何运行这个应用程序的?你能添加一些代码吗?我记得当我把代码编译成jar时遇到了类似的问题。它找不到任何图像,甚至认为它们与代码一起打包到了jar中。它与jar中的manifest文件有关。希望这至少为你指明了正确的方向,不过我没有把图像打包到罐子里。images目录在jar之外。即便如此,它也无法解释为什么它在桌面上工作,而不是在“程序文件”这样的文件夹中工作。