GUI项目,导出的jar包无法显示图片

参考博客

解决办法:

方法1,将项目打包后的jar文件和images文件放在同一目录下即可

方法2,在项目的 src 目录下新建 images包 ,将图片资源放入 images 包下

加载图片方式:

ImageIcon img = new ImageIcon(this.getClass().getClassLoader().getResourc("images/river.gif"));

ClassLoader 是类加载器的抽象类。

它可以在运行时动态的获取加载类的运行信息。可以这样说,当我们调用jar包中的 River 类时,JVM加载进 River 类,并记录下 River 运行时信息(包括 River 所在jar包的路径信息)。而 ClassLoader 类中的方法可以帮助我们动态的获取这些信息:

  • public URL getResource(String name): 查找具有给定名称的资源。资源是可以通过类代码以与代码基无关的方式访问的一些数据(图像、声音、文本等)。并返回资源的URL对象。

  • public InputStream getResourceAsStream(String name) : 返回读取指定资源的输入流。这个方法很重要,可以直接获得jar包中文件的内容。ClassLoader 是 abstract 的,不可能实例化对象,更加不可能通过 ClassLoader 调用上面两个方法。所以我们真正写代码的时候,是通过 Class 类中的 getResource() 和 getResourceAsStream() 方法,这两个方法会委托 ClassLoader 中的 getResource() 和 getResourceAsStream() 方法。

你可能感兴趣的:(笔记,java)