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

  先说下简单流程吧:

1、选中“项目”,右键-》export-》java的“jar file”-》勾选“export generated clas files and resources”-》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));

时间: 2024-09-29 05:53:41

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

Eclipse导出带有keystore的APK

特别强调: (1)在创建keystore中Location主要是用于保存新建的keystore文件,在创建时并不存在,按下面案例填好即可.如果下次使用已有的keystore,就可以使用browse进行浏览选中该keystore. 注意:如果在创建新的keystore, 千万别提前建立好一个keystore,再使用browse去选择这个keystore文件,如果那样系统会提示你keystore已经存在,无法继续. 1)点击Project -> Android Tool -> Export Sig

Java POI 导出带有图片的word

1. 引入maven ,具体可以上github看一下,这里做简单的说明,是一个大神封装了一下 官方提供的语法 文本语法是 {{Text}} 图片语法是{{@Image}} 其他的自己去看官方文档 <!--github一个处理word的一个解决方案 https://github.com/Sayi/poi-tl--><dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</

[转] 关于 Eclipse 导出 Android项目 JavaDoc 详细过程

关于Eclipse 导出JavaDoc过程中,遇到的问题 ,google 了一下 ,网友们 总说不一 ,最终 还是 搞定了 现在分享给大家 希望对大家有所帮助 用Eclipse默认的 JavaDoc需要注意 有两个问题   1.   找不到关于Android相关的类   2. 不支持中文/乱码 , 后者是编码问题  编码 GBK 的不可映射字符   选中项目右键 --->Export--- 如图 点击 下一步 只需要 选择src 目录 点击 Next下一步 这儿 注意 两个问题 一个 是 编码问

自定义带有图片的PreferenceActivity

http://my.oschina.net/huangsm/blog/40027 和大家分享一下关于android中PreferenceActivity使用以及为配置信息文件中添加图标的功能,首先给大家看一下效果图: 大家可以看到这是最终的效果图,android提供了很大的空间供开发者可以自行定义控件,你想让你的控件长成什么样子,你就可以让它长成什么样子.自己也很推崇这类开发思想,因为自行定义控件(前提:系统内置的控件满足不了自己的需求)的优点不言而喻.这边主要分享两种类型:1:单纯标题类型:2

eclipse 导出jar 没有主清单属性的解决方法

eclipse编写导出的jar文件,运行出现了没有主清单属性,问题在哪里呢?有下面几种方法: 1. 导出jar文件的时候选择[可运行的jar文件]而不是[Jar文件]即可,如下图: 2. 在jar文件包的MAINFIEST.MF文件,添加一行[Main-Class: XXX],其中XXX为主类名,注意XXX之前有一个空格,否则出现压缩包错误: 3. 在eclipse工程目录下编辑MAINFIEST.MF文件,然后导出的时候选择导出jar文件的时候选择[从工作空间中使用现有清单]即可,如下图:

eclipse导出jar(java打包导出jar)

有时候需要将j2se工程导出,这样可以在别处运作,就不必拘泥于开发感觉中才能运行了.具体做法如下:方法一:(工程没有引用外部jar包时,直接导出) 选中工程---->右键,Export...--->Java--->JAR file--->next-->选择jar file的路径及名称-->next-->next---> 选择main class--->finish. 方法2: 当工程引用了其他的外部jar时,由于eclipse不支持同时导出外部jar包

eclipse里打开图片文件乱码解决方案

从eclipse中打开工程文件下的图片文件显示乱码,原因是你电脑系统上没有设置图片的默认打开方式,或者是图片的默认打开方式与eclipse不兼容,尤其是win8操作系统,用户一般将图片的默认打开方式设置为win8的图片浏览器,就是方格子的那种,每次打开图片比较慢,解决方式是将图片的默认打开方式改成windows照片查看器,注意,该步骤只需要在工程外面,任意选中一种图片,然后右键进行修改,需要兼顾jpg及png格式,两种格式都要修改默认打开方式,即可.eclipse里打开图片文件乱码解决方案,布布

MyEclipse/Eclipse导出jar方法

首先分清楚Java项目有没有依赖第三方jar,其次考虑是那种软件,不过MyEclipse/Eclipse两者方法都相同. 第一种:java项目有依赖第三方Jar包 1 第一步,选中项目点击右键,选择>>export 2 第二步,在输入框里搜 jar,选择>> Runnable JAR file,点击>> next 3 第三步, launch configuration(程序入口配置) Exportdestination(导出目标) Library handing: 选择

用struts2做一个带有图片效果的登陆验证码

我们在登陆网站的时候总是会有带有图片验证功能的验证码,它是怎么做出来的了,今天我就详细的将每一步步骤写出来. 1.在action层 1 package cn.itcast.javaee.js.checkcode; 2 3 import java.io.PrintWriter; 4 import javax.servlet.http.HttpServletResponse; 5 import org.apache.struts2.ServletActionContext; 6 import com