`
Elvis_Wu
  • 浏览: 51006 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

在JAR包中读取图片

    博客分类:
  • JAVA
阅读更多

当你编写一个图形界面的程序的时候,你肯定要使用各种图片资源。那么,当你发布你的程序的时候,这些图片资源如何发布呢?最简洁的方式就是将这些图片资源连同你的class文件一起打包为一个可执行Jar文件,这样你只需发布一个jar文件就囊括了所有的内容,用户只需双击该Jar文件就能运行程序。如果把图片打包在Jar文件中,编写程序的时候如何访问这些图片呢?这些图片的路径是什么呢?可以用 getResource()方法来解决这个问题。下面我们具体分析2种最常见的情况:

1、你将所有资源打包为andy.jar,你的类位于一个包中:package andycpp;你的图片资源全部放在images文件夹中,而images文件夹也位于andycpp包内。这样的话,最终的路径表现为:
andy.jar
    |__andycpp
             |__  GUITest.class
             |__  images
                         |__ Snap1.jpg

因为图片文件夹和引用他的类位于同一个层次,因此可以通过相对路径来访问: getResource()方法,但是你不能随便用,你只能使用和图片文件夹处于同一层次的类的getResource()方法。比如上图中,GUITest类和images处于同一层次,所以要使用该类的getResource()方法。

2、另一种情况,如果你的类有很多,并且包结构很复杂,那么你就不大可能把图片和类放在同一个层次上,而是应该把图片放到最外层,让所有的类通过绝对路径来访问该图片:
        java.net.URL imgURL = GUITest.class.getResource("images/Snap1.jpg");
          ImageIcon img1 = new ImageIcon(imgURL);

这里需要注意的是大小写问题!Jar文件内部对大小写是敏感的,因此,如果图片本身叫做snap1.jpg,你把路径写成images/Snap1.jpg,那么结果将找不到该图片。还要注意的是,每个类(注意,不是对象)都有一个
andy.jar
    |__andycpp
             |__  GUITest.class
    |__  images
             |__ Snap1.jpg

代码如下:
 

java.net.URL imgURL = GUITest.class.getResource("/images/Snap1.jpg");
ImageIcon img1 = new ImageIcon(imgURL);

大家看到和上述代码的区别了吗?区别非常细微,仅仅是在“images”的前面加了一个反斜杠"/",这个反斜杠就表示根目录,没有反斜杠就表示相对路径。

分享到:
评论

相关推荐

    Java实现从jar包中读取指定文件的方法

    本篇文章将详细讲解如何在Java中实现从JAR包中读取指定文件的方法。 首先,Java提供了`java.util.jar`包,其中包含处理JAR文件所需的类。`JarFile`类是核心类,它允许我们打开并操作JAR文件。在给定的代码示例中,`...

    删除jar包中的指定文件

    标题“删除jar包中的指定文件”涉及到的是Java开发中对已打包JAR文件进行操作的知识点。在Java中,JAR(Java Archive)文件是一种归档格式,用于将多个类文件和其他资源组合到一个单一的文件中,方便分发和执行。...

    读取jar包中的图片,文本, 文本会写到控制台,图片会输出到F:盘中

    在Java编程中,有时我们需要在运行时访问JAR文件内部的资源,如图片、文本文件等。本示例将详细讲解如何从JAR文件中读取图片和文本,并将其保存或显示出来。以下是对给定标题和描述的详细解读。 首先,`GetJarFile....

    如何加载jar包中的spring配置文件

    在Spring MVC项目中,加载jar包中的Spring配置文件是一个常见的需求,特别是在进行SSM(Spring、Spring MVC、MyBatis)整合时。SSM框架的整合通常涉及到多个配置文件的组织和管理,其中一部分配置可能会被打包到独立...

    解决SpringBoot jar包中的文件读取问题实现

    本文将深入探讨如何解决SpringBoot jar包中的文件读取问题。 首先,让我们回顾一下问题的背景。在开发SpringBoot微服务时,开发人员小明遇到了一个问题,即在本地开发环境中能够正常读取资源文件,如word文档或模板...

    jar包中类的加载及jar中资源的使用

    本文将深入探讨`jar`包中类的加载机制以及如何在Java程序中使用`jar`中的资源。 一、类的加载机制 1. 双亲委托模型:Java的类加载器遵循双亲委托模型,即当一个类加载器需要加载某个类时,它首先会委托给父类加载...

    spring读取jar中的配置文件

    接下来,我们讨论如何在Spring Boot中读取JAR内的配置。Spring Boot提供了自动配置和属性绑定机制,可以更方便地处理配置。在启动类上添加`@SpringBootApplication`注解,然后创建一个配置类: ```java @SpringBoot...

    java读取图片信息所用jar包

    在Java编程语言中,读取图片信息通常涉及到处理图像元数据,这可能包括图片的宽度、高度、格式、创建日期、作者等。为了实现这一功能,开发者需要引入特定的库或JAR包。标题提到的"java读取图片信息所用jar包",指的...

    Jar包中如何正确地加载资源文件博文中用到的测试项目源码

    本篇文章将详细探讨如何在Java中正确地从JAR包中加载资源文件,并提供相应的源码示例。 首先,理解Java类路径(classpath)是关键。类路径是指Java虚拟机(JVM)查找.class文件和其他资源文件的路径。当你运行一个...

    浅谈两个jar包中包含完全相同的包名和类名的加载问题

    了解Jar包中的类加载问题 Java中的类加载机制是指Java虚拟机(JVM)在加载类文件时的相关处理过程。当多个Jar包中包含相同的包名和类名时,可能会出现类加载问题。下面我们来讨论这种情况下的类加载问题。 类加载...

    读取war包或jar包内的文件

    在JAR包中,资源通常与对应的类同级或者在特定的目录下。 4. **相对路径与绝对路径**: 在指定资源路径时,可以使用相对路径(相对于当前类或指定类)或绝对路径(从根目录开始)。相对路径更灵活,但可能引起找不到...

    Spring自动扫描无法扫描jar包中bean的解决方法

    然而,当Bean定义在独立的jar包中,有时Spring可能无法正确扫描并加载这些Bean。这种情况通常发生在将公共模块打包成jar,并在其他项目中作为依赖引入时。本文将深入探讨这个问题,并提供解决方案。 首先,我们需要...

    jar包里读取图片.rar ,,自己写的例子

    总结来说,从JAR包中读取图片涉及对Java类路径的理解,以及正确使用`getResource()`或`getResourceAsStream()`方法。在实际项目中,这通常是通过封装在静态方法或工具类中,以便在多个地方复用。对于开发者来说,...

    JAVA编程-分割合并文件-jar包中含源码

    提供的jar包中包含了源码,这意味着我们可以学习和理解实现文件分割和合并的具体算法和逻辑。通过阅读源码,开发者可以了解到如何控制文件的读写操作,如何管理多个文件的顺序,以及如何处理可能出现的错误和异常。...

    Eclipse调试jar文件中的代码

    本篇将详细介绍如何在Eclipse中设置Jadclipse插件,以便于调试jar文件中的类。 首先,Jadclipse是一款专门为Eclipse设计的反编译插件,它能够帮助开发者查看和调试没有源代码的字节码。当你试图调试jar文件并遇到...

    Itext生成PDF相关JAR包

    首先,`itextpdf-5.5.12.jar`是Itext的核心库,它提供了丰富的API用于创建、读取和修改PDF文档。这个版本(5.5.12)包含了对PDF/A和PDF/UA标准的支持,增强了安全性特性,并修复了已知的bug。使用Itext,你可以创建...

    dom4j从jar包中读取xml文件的方法

    总结起来,DOM4J从JAR包中读取XML文件,主要涉及以下知识点: 1. DOM4J的`SAXReader`类用于解析XML文档。 2. Java的`ClassLoader`用于加载类和资源,特别是JAR包内的资源。 3. `getResource`和`getResourceAsStream`...

    jar 包 内文件读取 文件内容

    例如,如果你有一个名为`TestMyPath`的文件在JAR的根目录下,你可以这样读取: ```java InputStream in = getClass().getResourceAsStream("/TestMyPath"); // 然后使用BufferedReader等读取流中的内容 ``` 4....

    EXCELJAVA读取JAR包

    总结来说,"EXCELJAVA读取JAR包"这个主题实际上是指如何在Java项目中使用Apache POI库从JAR文件中读取Excel数据。通过理解Excel文件结构、导入和使用Apache POI库,以及编写Java代码来读取和处理数据,开发者可以...

    解决java打包之后无法加载静态资源的问题SWTResourceManager.java源码

    利用swt中的一个获取图片的类SwingResourceManager 来解决将程序打为使用java打包之后,生成的jar包中图片找不着的。这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成...

Global site tag (gtag.js) - Google Analytics