我有一个Java应用程序,它依赖于本地源二进制文件,例如字体和图像。在 Eclispe 中进行开发时,我在/res
中使用了/src
目录来容纳这些依赖项,从而导致示例项目结构如下所示:
- src
- res
lena.png
- com.foo
Main.java
在 Main.java 中,可以使用以下调用来获取资源引用。
final File lFile = new File(Main.class.getClassLoader().getResource("res/lena.png")).getPath());
这种方法在我的开发过程中一直很好用,但自从转移到 IntelliJ 后,它会产生FileNotFoundException
。这是自转换以来已停止运行的应用程序的唯一方面。
在使用 IntelliJ 时,是否需要以不同的方式注册依赖项而不是简单地将它们插入到项目结构中?我是否应该使用与IDE无关的方法?
这是Exception
;它看起来像是指向编译目录(/bin
),但我可能会弄错:
java.io.FileNotFoundException: /home/alexander/Development/application-1/application/bin/res/fonts/lena.png (No such file or directory)
我使用继承项目编译输出路径修改了项目以使用编译到模块输出路径,这改变了 Eclipse 的输出目录是/bin
到 IntelliJ 的/out
。运行时路径相应更新。我仍然无法访问文件,但我可以确认它们存在于/out
层次结构中,并且它们指向正确的位置。