j2se打包安装 我这有一个j2se桌面应用程序,在eclipse下可以运行,也没有错误,但是打成jar包以后就不能运行了,想请教各位,我想用installshield把jar包打成安装程序,是不是一定要jar包可以运行,才可以啊 , 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 分2步来检查1. 将程序脱离Eclipse,打成jar是否可以运行?2. 做成安装程序后,再检查安装后是否能运行?如果第1步,不能运行,做第2不就没意义了!当然,也可以不用jar,直接运行class,这样做安装时,需加入的文件就太多了。但也需要先保证脱离Eclipse能运行 用fatjar这个插件打包,然后打包的时候有一步是选main类的,还有就是注意文件夹,图片等的路径。 你在打包的时候有没有指定主函数啊,如果没有指定jar肯定运行不了 做打包程序的的时候 ,注意要选main 和自己要加载的主要内容和文件啊!! 主函数已经选择了,但是不能运行jar包,这个程序用了很多动态链接库,有很多判断文件路径的方法,只要是遇到读取文件的时候就不能运行,但是读出来的路径和jar包的路径是一样的,没有错误, 读取文件用绝对路径读取,jar文件中可能会出现读取资源文件的问题,一般都用绝对路径访问,别用相对路径(也可以但是很麻烦)。1、你将所有资源打包为andy.jar,你的类位于一个包中:package andycpp;你的图片资源全部放在images文件夹中,而images文件夹也位于andycpp包内。这样的话,最终的路径表现为: andy.jar |__andycpp |__ GUITest.class |__ images |__ Snap1.jpg 因为图片文件夹和引用他的类位于同一个层次,因此可以通过相对路径来访问: getResource()方法,但是你不能随便用,你只能使用和图片文件夹处于同一层次的类的getResource()方法。比如上图中,GUITest类和images处于同一层次,所以要使用该类的getResource()方法。 java.net.URL imgURL = GUITest.class.getResource("images/Snap1.jpg"); ImageIcon img1 = new ImageIcon(imgURL); 2、另一种情况,如果你的类有很多,并且包结构很复杂,那么你就不大可能把图片和类放在同一个层次上,而是应该把图片放到最外层,让所有的类通过绝对路径来访问该图片!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”的前面加了一个反斜杠"/",这个反斜杠就表示根目录,没有反斜杠就表示相对路径。3.File f= new File("查找的文件相对路径"); f.getAbsolutepath();(好像是这个)我建议用第三种方法,简单。 java程序员终极推荐图书pdf及其小项目下载 求推荐个免费的jsp 虚拟空间 求一正则表达式 arraycopy不懂啊 怎么写一个java程序判断windows操作系统下的文件夹是否共享? JTree的奇怪问题 使用java2图形设计(卷2 Swing)的样例,内部窗体无法显示 有个错误信息 不知道怎麽解决 谢谢了 ejb方法的返回值是否不能是二维数组,怎么办 关于数据库连接池的配置和使用 String文字内容重整Part2 hibernate使用oracle序列
1. 将程序脱离Eclipse,打成jar是否可以运行?
2. 做成安装程序后,再检查安装后是否能运行?如果第1步,不能运行,做第2不就没意义了!
当然,也可以不用jar,直接运行class,这样做安装时,需加入的文件就太多了。但也需要先保证脱离Eclipse能运行
andy.jar
|__andycpp
|__ GUITest.class
|__ images
|__ Snap1.jpg
因为图片文件夹和引用他的类位于同一个层次,因此可以通过相对路径来访问: getResource()方法,但是你不能随便用,你只能使用和图片文件夹处于同一层次的类的getResource()方法。比如上图中,GUITest类和images处于同一层次,所以要使用该类的getResource()方法。 java.net.URL imgURL = GUITest.class.getResource("images/Snap1.jpg");
ImageIcon img1 = new ImageIcon(imgURL); 2、另一种情况,如果你的类有很多,并且包结构很复杂,那么你就不大可能把图片和类放在同一个层次上,而是应该把图片放到最外层,让所有的类通过绝对路径来访问该图片!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”的前面加了一个反斜杠"/",这个反斜杠就表示根目录,没有反斜杠就表示相对路径。
3.File f= new File("查找的文件相对路径");
f.getAbsolutepath();(好像是这个)我建议用第三种方法,简单。