eclipse中SWT程序的打包发布


前言

创建的程序可以打包发布,使其能够脱离Eclipse单独运行。对于SWT程序,需要添加swt的相关jar依赖包。


一、导出jar包

方法一:直接导出Runnable JAR file

直接导出Runnable JAR file。
在这里插入图片描述
选择导出的项目,以及要导出到的位置。

在这里插入图片描述
这种方法导出的jar包可以直接运行,操作简单。但是jar包很大,里边貌似导出了一些别的东西。

方法二:导出JAR file

导出JAR file。
在这里插入图片描述
选择要导出的项目,以及导出位置,其他默认。
在这里插入图片描述
在这里插入图片描述
到最后一页时,一定要选择程序入口函数Main class。比如book.ch2.HelloSWT,代码中是下面这种形式。
在这里插入图片描述
在这里插入图片描述
至此成功导出一个jar包。
在这里插入图片描述

二、运行jar包

选择导出Runnable JAR file的jar包,可以双击运行,或者命令行运行:
在这里插入图片描述
在这里插入图片描述
选择导出JAR file的jar包,运行时会遇到一些问题。

问题一 错误: 找不到或无法加载主类 book.ch2.HelloSWT 原因: java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Shell

在这里插入图片描述
根据第一句的提示是没有找到主类,第二句是swt的依赖没有加好。那么首先确定一下主类是否在,这个主类就是之前jar包打包时的入口函数。

打开jar包,这里我用的7z压缩工具打开。找到里边的MANIFEST.MF,查看到确实有Main-Class: book.ch2.HelloSWT。
在这里插入图片描述
那么给这个jar包添加一下swt依赖,swt的依赖包可以从eclipse的plugins文件夹里边找。注意Class-Path格式,冒号后边一定要有空格。最后将swt依赖与jar包并列放在一个文件夹里。
在这里插入图片描述
最后双击运行,或者命令行运行就ok啦!
在这里插入图片描述

问题二:修改MANIFEST.MF文件时用压缩工具解压之后再压回去,运行报错

在这里插入图片描述
改后缀并不是个万全的方法,这种时候要用jar命令行来解压缩。

解压:

jar -xvf helloSWT.jar

在这里插入图片描述
压缩:

jar -cvfM helloSWT.jar META-INF/MANIFEST.MF book/ch2/*.*

其中META-INF/MANIFEST.MF是MANIFEST.MF文件在当前文件夹test jar包的位置,book/ch2/. 是HelloSWT.class文件的位置,*.*代表是打包ch2文件夹里全部内容。
在这里插入图片描述
之后就可以得到可执行的jar包啦!
在这里插入图片描述
要注意的是,压缩jar包千万不要用下边这个命令啊!!
在这里插入图片描述
这个命令看似压缩是没有问题,但一定要注意看这个MANIFEST.MF,我们刚刚写好的什么Main-Class,Class-Path都消失了啊!!没有Main-Class就意味着又会出现问题一里边无法找到主类的错误了啊,白改了啊,所以一定不要用这个压缩命令。
在这里插入图片描述
强烈建议压缩完jar包以后看一下,确认目录是你想要的,MANIFEST.MF配置也对,避免做白工。
在这里插入图片描述

总结

怕麻烦就直接导出Runnable JAR file,也能用;
导出JAR file的话,注意MANIFEST.MF的配置,使用jar命令解压缩后一定要看一下是不是自己想要的格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值