欢迎光临
我们一直在努力

关于Intellij Idea下多Modules模块(项目)时图片资源调用不出来的问题,new ImageIcon()图片不显示问题

关于路径定义(绝对路径,相对路径,Source Root,Content Root等等)的问题不在此文讨论的范围,。

前端通过相对路径,绝对路径调用图片一般不会出现不显示的情况。

但是java通过new ImageIcon()加载图片时,图片却不法正常显示(绝对路径可以),相对路径代码预览时路径图片可以显示,但运行时却是空白。

一、先看一下IDEA右键PATH相关的技巧

对着IDEA左侧目录时的文件点右键,选–>Copy Path/Reference,然后会出现如下菜单,最下面的三行,只有设置Resources目录时才会出现。

Absolute Path //E:\java\dvy\src\main\resources\image\index.jpg
File Name  // index.jpg
------------------
Path from Content Root  // src/main/resources/image/index.jpg
Path from Source Root // image/index.jpg
Toolbox URL // jetbrains://idea/navigate/reference?project=MyTank&path=image/index.jpg

二、分析问题:

1、项目(模块)目录关系

MyEclispe支持资源浏览窗口里多个项目显示,在IDEA里只有让项目以Modules(模块)显示。

先看下项目结构

E:\java\
--------dvy    // Modules(模块,项目)dvy
--------dvy\src\main\resources\image\index.jpg  // dvy项目下图片路径
--------MyTank    // Modules(模块,项目)MyTank
--------MyTank\src\main\resources\

2、出现的问题:

IDEA同窗口下多模块(项目)同时开发时,出现图片资源无法正常加载。

JLabel jl = new JLabel(new ImageIcon("image/index.jpg")); // 只有使用绝对路径时可以正常显示,这种路径写法在IDEA指向该路径时是可以看到图片的。使用Resources标记目录,及其它方式均无法正常显示。

注意:关于具体的打包Resources等目录具体是怎么转换,资源是怎么拷贝打包的不在此问题的讨论范围。

通过第一部分对IDEA右键PATH的相关分析,我们可以看到

Toolbox URL // jetbrains://idea/navigate/reference?project=MyTank&path=image/index.jpg

那这么问题原因就显现出来了,明明是dvy模块(项目)却显示project=MyTank。

错误原因:

同一窗口中两个模块(项目),在导入或者其它操作过程中,导致一些项目配置信息混乱,致使只识别到MyTank模块(项目)。因此,使用IDEA进行多模块(项目)开发时,需要调用图片资源时可要注意这个坑。

3、解决方法:

把多余的另一个(模块)(Ctr + Shift + Alt + s –>Modules)移除,并物理移动到非同一目录。

重新导入正在开发的项目,然后问题就解了。

这也许是IDEA唯一一点相对MyEclipse美中不足的问题,多个模块(项目)时导致引入图片失败。

JLabel jl = new JLabel(new ImageIcon("image/index.jpg"));

OK,调用一切正常。

针对JAVA项目(IDEA下是Modules),文件路径以src所在的目录为基准,调用方法如下(以上图目录为例):

JLabel jl = new JLabel(new ImageIcon("image/index.jpg"));  // image与src目录平级
JLabel jl = new JLabel(new ImageIcon("src/main/resources/image/index.jpg")); // 使用src目录时的调用方法
赞(2)
版权归原作者所有,如有侵权请告知。达维营-前端网 » 关于Intellij Idea下多Modules模块(项目)时图片资源调用不出来的问题,new ImageIcon()图片不显示问题

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址