JAVA学习笔记 -- 把资源文件打包到jar包

初学GUI,用Eclipse导出jar包,设定的最小化图标不能显示(hello.png文件放在项目的根目录下)。代码如下:

import javax.swing.JFrame;
import java.awt.Toolkit;
import java.awt.Image;
import java.net.URL;

public class GUITest {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Toolkit kit = Toolkit.getDefaultToolkit();
		Image image = kit.getImage("hello.png");
		frame.setIconImage(image);
		frame.show();
	}
}

后来我发现只要把jar包和hello.png在同一目录下,图标就可以正常显示。这表示jar是一个单独的文件而非一个文件夹。而上面这代码表示导出的jar文件和hello.png必须要在相同路径下。

解决方法

import javax.swing.JFrame;
import java.awt.Toolkit;
import java.awt.Image;
import java.net.URL;

public class GUITest {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Toolkit kit = Toolkit.getDefaultToolkit();
		URL imgURL = GUITest.class.getResource("images/hello.png");
		Image image = kit.getImage(imgURL);
		frame.setIconImage(image);
		frame.show();
	}
}

把hello.png的目录是 "项目名/bin/images/hello.png" 可以看到images 和class文件是同一目录的,所以代码中"images/hello.png"是表示相对路径。当然也可以把images文件夹放在项目的根目录下,只要把路径改成"/images/hello.png" 。这样,导出jar包后,在其他位置也可以正常显示图标,因为路径正确了。

JAVA学习笔记 -- 把资源文件打包到jar包

时间: 2024-12-21 18:30:22

JAVA学习笔记 -- 把资源文件打包到jar包的相关文章

Java学习笔记七(文件夹操作)

1.介绍 上一篇博客介绍的是java中常用的操作文件的方式,本篇博客着重讲解一下,在Java中是如何来操作文件夹的.主要是利用的是Java.IO包下面的File类,本篇博客着重讲解一下该类的构造函数和常用的方法. 2.File类的字段摘要 File类为我们提供了与系统有关的路径分割符,字段分别如下 static String pathSeparator:返回值为字符串,结果表示分号; static char pathSeparatorChar:返回值为char类型,结果表示分号 static c

Spark学习笔记-如何运行wordcount(使用jar包)

IDE:eclipse Spark:spark-1.1.0-bin-hadoop2.4 scala:2.10.4 创建scala工程,编写wordcount程序如下 package com.luogankun.spark.base import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ /** * 统计字符出现次数 */ object

java中实现对lib文件中的jar包快速buildpath

当我们把jar文件全部复制到lib后,如果一个一个去buildpath是很麻烦的,这里其实有小技巧的,我们点击第一个jar文件,然后按着shift,再点击最后一个jar文件,就可以实现全选jar包,然后右键-->buildpath即可.

Java学习笔记--字符串和文件IO

1.Java中的字符串类和字符的表示 2.区分String,StringBuilder和StringBuffer 3.从命令行中给main方法传递参数 4.文件操作 1 Java中的字符串和字符 1.1 String类 字符串就是由一系列的字符组成的序列,在很多语言中,比如C语言,将其存储在一个数组中.现在运用Java的思想,就要将字符串视为一个对象,其中Java规定的String类有11个构造方法,同时还有至少40种实现的方法,通过String类的学习,可以很好地了解面向对象的类和对象的思想.

Java学习笔记——Socket实现文件传输

我越是逃离,却越是靠近你. 我越是背过脸,却越是看见你. 我从你开始, 我在你结束. 需求:实现局域网下socket传输文件. 客户端步骤: 1.建立与服务器的连接 2.创建client输出流 3.创建输入流,绑定本地文件 4.读取文件后输出给服务器 服务器端步骤: 1.启动服务器 2.创建accept输入流 3.创建输出流绑定本地文件 4.读取客户端信息写入本地文件 1.字节流传输文件. 1 public class Client { 2 3 public static void main(S

Java学习笔记——位运算符、方法、package包、键盘输入

位运算符: a>>b = a左移b位 = a*2^2 右移舍去低位 方法: method,function,与c函数类似 package包: 通常第一句 写域名倒着写 package --; 主要包: java.lang 核心类string.math.Integer.System.Thread等 java.awt 构建管理GUI java.net 网络相关 java.io 输入输出 java.util 定义系统特性.使用与日期日历相关的函数 (详见api) 键盘输入: 使用别的包的类需要imp

java学习笔记16--I/O流和文件

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理设备之间的数据传输,对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中 输入/输出流可以从以下几个方面进行分类 从流的方向划分: 输入流.输出流 从流的分工划分: 节点流.处理流 从流的内容划分: 面向字符的流.面向字节的流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对

JAVA学习笔记 -- 多线程之共享资源

在多线程程序运行过程中,可能会涉及到两个或者多个线程试图同时访问同一个资源.为了防止这种情况的发生,必须在线程使用共享资源时给资源"上锁",以阻挡其它线程的访问.而这种机制也常常被称为互斥量,本文主要介绍它的两种方式synchronized和Lock . 1.synchronized 当任务要执行被synchronized关键字保护的代码片段的时候,它会检查锁是否可用,然后获取锁,执行代码,释放锁.synchronized也有两种用法: A.synchronized方法 import

java学习笔记16--异常

java学习笔记16--异常 异常 异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失, 所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正常的执行. 异常类的继承结构 在整个java的异常结构中,实际上有以下两个最常用的类:Exception.Error,这两个类全都是Throwable的子类 Exception:一般表示的是程序中出现的问题,可以直接使用try...catch处理. Error:一般指