调试模式下getClass().getResource(path)的路径问题及解决
问题:getResource()在Jar包与IDE调试模式下的路径适配问题
我编写了如下创建图片的代码:
private Image createImage(String path) { URL imageURL = getClass().getResource(path); if (imageURL == null) { System.err.println("Resource not found: " + path); return null; } else { return (new ImageIcon(imageURL)).getImage(); } }
通过Jar包运行应用时,将getResource()的路径设为/data/ico.png,由于Jar包内文件结构为app.jar/data/ico.png,因此能正常创建图片。但在IDE调试时,我通过isdebug参数将路径改为..\\..\\..\\data\\ico.png,却无法找到该图片。想请教:能否这样使用getResource()?或者是否有更通用的方式处理Jar/调试模式下的路径问题?
项目目录结构:
src.packageA.packageB.MainClass.java
图片文件位置:
data\ico.png
解决方案
适配该结构的正确路径为../../../data/ico.png(或简写为/data/ico.png)。需要注意的是,此时data/ico.png必须放置在项目的bin目录中——因为Eclipse调试模式的资源查找根目录是bin,而非项目根目录。
内容的提问来源于stack exchange,提问作者rainbow
相关产品推荐
相关产品推荐

