Eclipse中使用导出Jar包后打开加载不了图像 ??????
出现这种问题的原因大多是因为路径的问题,往往是在项目中运行正常,但是一旦打包成Jar后就不能正常显示了,下面总结一下解决此类问题的方法:
一、通过使用外部资源文件的方式解决
把项目打包生成Jar后,再新建一文件夹,把项目中所有使用的图片文件和生成Jar文件放在该目录下,只要代码对图片文件的引用路径正确,如:ImageIcon
image=new
ImageIcon(SwingResourceManager.getImage("icons/logo.gif"));就可以了。
这种方式下,图片文件与类文件不是一块放在包中的,类文件在包中,而图片文件在项目根目录下。
二、通过使用内部资源文件的方式解决
把所用的图片文件放在项目使用的包中,打包时把图片文件同时打进Jar文件中。这种方式在具体代码中应使用下面其中一种:
ImageIcon image = new ImageIcon(this.class.getResource("icons/logo.gif"));
下面对这种方式详细说明:
当你编写一个图形界面的程序的时候,你肯定要使用各种图片资源。那么,当你发布你的程序的时候,这些图片资源如何发布呢?最简洁的方式就是将这些图片资源连同你的class文件一起打包为一个可执行Jar文件,这样你只需发布一个jar文件就囊括了所有的内容,用户只需双击该Jar文件就能运行程序。如果把图片打包在Jar文件中,编写程序的时候如何访问这些图片呢?这些图片的路径是什么呢?可以用getResource()方法来解决这个问题。下面我们具体分析2种最常见的情况:
1、你将所有资源打包为andy.jar,你的类位于一个包中:package andycpp;你的图片资源全部放在images文件夹中,而images文件夹也位于andycpp包内。这样的话,最终的路径表现为:
andy.jar
|__andycpp
|__ GUITest.class
|__ images
|__ Snap1.jpg
因为图片文件夹和引用他的类位于同一个层次,因此可以通过相对路径来访问:
java.net.URL imgURL = GUITest.class.getResource("images/Snap1.jpg");
ImageIcon img1 = new ImageIcon(imgURL);
这里需要注意的是大小写问题!Jar文件内部对大小写是敏感的,因此,如果图片本身叫做snap1.jpg,你把路径写成images/Snap1.jpg,那么结果将找不到该图片。还要注意的是,每个类(注意,不是对象)都有一个getResource()方法,但是你不能随便用,你只能使用和图片文件夹处于同一层次的类的getResource()方法。比如上图中,GUITest类和images处于同一层次,所以要使用该类的getResource()方法。
2、另一种情况,如果你的类有很多,并且包结构很复杂,那么你就不大可能把图片和类放在同一个层次上,而是应该把图片放到最外层,让所有的类通过绝对路径来访问该图片:
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文件中的路径问题是一件比较常见的问题,尤其是在使用 Eclipse 等IDE 时。...这两种方式可以解决 Java 将图片打包到 Jar 文件中的路径问题。
在Java开发中,将多个Class文件打包成一个JAR(Java Archive)文件是一种常见的做法,这有助于简化项目的部署过程并提高代码的可管理性。本文将详细介绍如何通过不同的方法将Class文件打包为JAR文件,并解释每一步的...
### Java项目中图片资源在打包成Jar后的显示问题及解决方案 #### 一、问题概述 在Java项目开发过程中,我们经常需要在应用中嵌入图片等资源文件。这些资源文件通常存储在项目的资源目录下(如`src/main/resources`...
在Java开发过程中,将项目打包成可执行的JAR(Java Archive)文件是常见的操作,这使得代码可以方便地分发、部署和运行。本文将详细介绍如何将Java工程打包成可执行的JAR文件。 首先,确保你有一个完整的Java工程,...
JAR(Java Archive)是 Java 开发工具包 (JDK) 中的一个实用程序,用于将多个 Java 类文件和其他资源文件打包成一个 JAR 文件。JAR 文件不仅便于分发和部署,还支持对文件进行压缩,减少文件大小。 #### 二、JAR ...
Java 打包成 jar 文件和将 jar 文件导出为 exe 文件的方法汇总 本文档将详细介绍 Java 打包成 jar 文件和将 jar 文件导出为 exe 文件的方法汇总。Java 是一种流行的编程语言,广泛应用于软件开发、Android 应用开发...
Java程序员在开发过程中经常会遇到这样一个问题:如何将编写好的Java程序打包成一个可执行的Jar文件?在Eclipse中,我们可以通过简单的步骤将Java程序打包成Jar文件,本文将详细介绍这其中的实现步骤和重要的知识点...
在Java开发过程中,将项目打包成一个JAR(Java Archive)文件是非常常见的做法。JAR文件不仅可以方便地进行分发与部署,还能有效地组织类文件和资源文件。根据提供的信息,本文将详细介绍如何通过不同方式将Java程序...
标题提到的"jarjar-方便Java打包工具,自定义修改jar包包名",这表明jarjar允许开发者对JAR内的类进行重命名,并且可以改变JAR本身的文件名。这种灵活性对于项目维护、依赖管理或解决类冲突问题非常有帮助。例如,你...
在Java编程中,将程序打包成JAR文件是常见的部署方式,这使得代码可以作为一个独立的可执行单元进行分发。然而,在打包包含数据库连接的Java应用程序时,可能会遇到一些问题,尤其是涉及到像MySQL这样的外部数据库。...
在这里,我们将详细介绍如何将 Java 程序或项目打包成 jar 文件,然后将 jar 文件转换成exe 文件,并最终生成一个安装文件。 将 Java 程序或项目打包成 jar 文件 要将 Java 程序或项目打包成 jar 文件,我们需要...
在Java项目工程中,打包过程可能包括编译源代码、复制资源文件、生成类文件、创建或更新manifest文件,然后将这些元素整合到jar、tar或zip文件中。IDEs如Eclipse、IntelliJ IDEA和Maven、Gradle等构建工具都提供了...
NULL 博文链接:https://jarg.iteye.com/blog/852885
本文将详细介绍如何使用Java将项目打包成jar文件,以及进一步将jar文件打包成跨平台的exe文件。 #### 一、打包成jar文件 ##### 1.1 使用Eclipse打包 - **导出为jar文件**:在Eclipse中,选择“文件”->“导出”->...
这段代码会将`src/main/java`目录下的所有文件打包到`myapp.jar`中,同时包含之前创建的MANIFEST.MF。 4. **生成SDK包**:如果要创建SDK包供第三方使用,通常还需要包括文档、示例代码和其他相关资源。可以将这些...
总的来说,将JSP编译打包成jar是一个将静态的JSP文件转换为可执行的Servlet代码,并利用构建工具Ant完成打包的过程,这样可以方便地在不支持JSP的环境中运行和部署。这个过程涉及到JSP、Servlet、Ant构建工具以及web...
在本文中,我们将深入探讨如何使用Spring Boot和Maven来构建一个项目,使得依赖和配置文件被打包到jar包外部,以实现更加灵活的项目管理。这个方法对于那些需要根据不同环境进行定制配置或者频繁更新配置的应用来说...
Java打包JAR(Java Archive)文件是将多个类文件、资源文件和其他相关文件组合到一个单一的可执行文件中,以便于分发和执行。在Java开发中,JAR文件通常用于封装库、应用程序或者Java小应用程序(Applet)。本实例将...
### Java应用程序从打包JAR到编译安装的详尽指南 #### 一、工具集概览 本章节将深入探讨用于Java应用程序从打包至编译安装的工具集,包括Eclipse、fat-jar、exe4j以及Inno Setup。这些工具各司其职,共同构成了...
这些游戏通常以JAR(Java Archive)格式进行打包,便于在支持Java ME(Mobile Edition)平台的设备上运行。本打包下载包含48款不同的JAVA手机游戏,为用户提供了丰富的娱乐选择。 Java游戏开发的关键知识点: 1. *...