先说下简单流程吧:

1、选中“项目”,右键-》export-》java的“jar file”-》勾选“export generated clas files and resources”-》设置生成的jar文件的路径和名称-》next-》next-》在“select the class of the application entry point”里面选择入口类-》finish。

2、流程看起来不复杂,但是对于一个刚学java的人来说,可能要抓狂:java是区分大小写的,包括文件名。这一定要注意!

3、在进行export之前,最好先右键选择refresh一下,不然如果添加了文件或者删除了文件或者文件的其他改名等,都让你莫名其妙。

  说下我碰到的问题和怎么解决的吧,我初学java,只知道可以这样解决,不知道标准答案,也不知道有没有更好的答案。

1、我有3个资源文件夹,分别是images、musics、map,里面分别放着图片(jpg、png等)、音效(midi)、二进制文件。开始打包前,这些文件夹是放在最外面的,即跟src目录同级。调试运行没问题后,我就运行export打包了。执行打包后的jar文件,发现找不到资源文件!自己弄了半天,没弄好,看网上的帮助,知道要用xx.class.getResource(/images/xx.jpg)这种方法,可是还没弄好,自己写测试代码分析,原来生成jar文件的根目录不是src的父目录,而是编译生成的bin文件夹!

  解决方案:将images、musics、map目录放到src目录,右键工程点refresh,会自动同步到bin目录下(这个有点神奇)。

2、将工程里面所有Toolkit.getDefaultToolkit().getImage(strFile)打开文件的方式换成new ImageIcon(xx.class.getResource(str)).getImage()这种格式,例如原来是Image imgBg = Toolkit.getDefaultToolkit().getImage("images\\background.png");

换成imgBg= new ImageIcon(test.class.getResource("/images/background.png")).getImage(); 这里有两点要注意的:第一是images前面要加“/”;第二是不能用test.class.getResource("/images/background.png").getFile()!必须用ImageIcon打开url,然后再从imageIcon得到Image。

3、将工程里面所有File file = new File(fileName)的读取文件方式;换成InputStream is = FileTool.class.getResourceAsStream("/。。。这里是文件路径文件名"); 这种方式。

  说白了,jar操作里面的文件,只能用根目录的相对路径,而这个根目录的相对路径是通过class来定位到的!另外,jar打开里面的文件,要用getResource得到的url或者getResourceAsStream得到的InputStream !

给些代码示例:

  imgBg= new ImageIcon(test.class.getResource("/images/background.png")).getImage();

  InputStream in = FileTool.class.getResourceAsStream("/map/grade" + index + ".dat");

  DataInputStream din = new DataInputStream(in);

  sequence = MidiSystem.getSequence(GameMidi.class.getResource(/musics/1.mid));

eclipse导出带有图片、音效、其他二进制文件的jar文件的经历的更多相关文章

  1. Eclipse导出可执行Java工程/可执行Jar文件(包含第三方Jar包)

    1. 首先,右键你的Java工程,选择Export,在Java文件夹下选择Runnable JAR file,如下图所示: 2. 选择Runnable JAR file后,会弹出如下所示的对话框,选择 ...

  2. Eclipse中将含有图片资源的项目打包成jar文件

    前言: 最近学了GUI编程和UDP协议,心血来潮想做一个局域网内的聊天软件,前期都还算顺利,直到后来将整个项目打包成jar文件时遇到了困难.如图: 自己设置的图标不见了,但是也没有默认的图标,说明图片 ...

  3. Java 图片爬虫,java打包jar文件

    目录 1. Java 图片爬虫,制作 .jar 文件 spider.java 制作 jar 文件 添加执行权限 1. Java 图片爬虫,制作 .jar 文件 spider.java spider.j ...

  4. 用eclipse来制作并使用可执行的jar文件

    我近来用java写了一个股票收益分析的小程序,用于计算我的股票操作所带来的的收益.这里,记录了如何将源代码打包成可执行的命令的一个过程. 1:生成可执行的jar文件 选中工程,选择菜单中的export ...

  5. Java POI 导出带有图片的word

    1. 引入maven ,具体可以上github看一下,这里做简单的说明,是一个大神封装了一下 官方提供的语法 文本语法是 {{Text}} 图片语法是{{@Image}} 其他的自己去看官方文档 &l ...

  6. 导出带有图片的excel

    public static void main(String[] args) { try { FileOutputStream out = new FileOutputStream("d:\ ...

  7. PHP导出带有emoji表情的文本到excel文件出问题了

    前段时间做了一个导出用户信息(包含微信昵称)到excel文件的功能,一直没问题,今天突然有人反馈说导出来的数据有一些丢失了.我试了一下,发现有些数据导出没问题,有些有问题,某些列出现了空白,数据打印出 ...

  8. 如何在eclipse将程序导出成jar文件

    如何在eclipse将程序导出成jar文件 听语音 | 浏览:916 | 更新:2015-08-22 17:57 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师傅为你的电脑系统,选个靠谱师傅 ...

  9. 导出jar文件

    当我们编好一段代码时,就需要将其导出成应用程序,即jar文件(jar文件就是在Java运行环境下运行的应用程序).今天,巩固就教大家用eclipse导出jar文件. 第一步:找到eclipse,双击打 ...

随机推荐

  1. Druid:一个用于大数据实时处理的开源分布式系统——大数据实时查询和分析的高容错、高性能开源分布式系统

    转自:http://www.36dsj.com/archives/28590 Druid 是一个用于大数据实时查询和分析的高容错.高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分 ...

  2. HDU5446 Unknown Treasure(组合数膜合数-->Lucas+中国剩余定理)

    >On the way to the next secret treasure hiding place, the mathematician discovered a cave unknown ...

  3. Java Modifiers

    Private means this could only be seen within this class. Protected means "package private" ...

  4. bzoj 2001: City 城市建设 cdq

    题目 PS国是一个拥有诸多城市的大国,国王Louis为城市的交通建设可谓绞尽脑汁.Louis可以在某些城市之间修建道路,在不同的城市之间修建道路需要不同的花费.Louis希望建造最少的道路使得国内所有 ...

  5. JVM体系结构之二:类加载器

    一.概述 定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型.类加载和连接的过程都是在运行期间完成的. 二. 类的加载 ...

  6. Spark Streaming之六:Transformations 普通的转换操作

    与RDD类似,DStream也提供了自己的一系列操作方法,这些操作可以分成四类: Transformations 普通的转换操作 Window Operations 窗口转换操作 Join Opera ...

  7. 人物-IT-马云:马云

    ylbtech-人物-IT-马云:马云 马云 (阿里巴巴集团创始人) 马云,男,汉族,中共党员,1964年9月10日生于浙江省杭州市,祖籍浙江省嵊州市谷来镇, 阿里巴巴集团主要创始人,现担任阿里巴巴集 ...

  8. 办公软件-Excel:Excel百科

    ylbtech-办公软件-Excel:Excel百科 Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件.直观的 ...

  9. js---window对象的三种窗口

    ============================================================================ window对象的三种窗口.html < ...

  10. C/C++的区别

    C和C++的关系:就像是win98跟winXP的关系.C++是在C的基础上增加了新的理论,玩出了新的花样.所以叫C加加. C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设 ...