本项目没有用到外部JAR包,所有的包都是JDK自带。
1.单击Eclipse的File-->Export
2.在弹出的Export对话框中选择Jave-->JAR file-->next
3.在打开的JAR Export对话框中勾选上要打包的项目(为了使项目不那么臃肿,没用的文件不必勾选),并勾选下面的Export generated class files and resources. (导出生成的class文件和资源文件)。在Select the export destination:中输入你的jar包要导出的目录(我的目录为桌面)
Ps:
Export all output folders for checked projects (导出选中项目的所有文件夹)
Export java source file and resouces (导出的jar包中包含*.java文件)
Export refactorings for checked projects (导出的文件中包含重构信息)
4.在Options选项卡中使用默认的Compress the contens of the JAR file(压缩jar包的文件内容)(不勾选也可,只是生成的文件会比较大),并勾选Overwrite existing files without warning。-->next
Ps:
Add directory entries (增加路径条目)
作用:1.项目资源文件如xml文件放在项目的package外面,
2.项目中使用注解的部分,
若不勾选该选项这两种情况均会报错。
Overwrite existing files without warning(不提醒覆盖存在的文件)勾选该项时,若导出目录有同名的jar包则直接覆盖而不提醒你。
5.进入JAR Packaging Options对话框,使用默认的方式即可,勾选Export class files with compile warnings。
PS:
Export class files with compile errors(导出带有errors的class文件)
Export class files with compile warnings(导出带有warnings的class文件)
6.勾选下面的Save the description of this JAR in the workspace(在工作空间保存JAR描述文件)给文件命名,以.jardesc结尾-->next
PS:
该选项主要是为了方便下次给该项目打包时使用,下次打包时直接在项目中双击生成的.jardesc文件(文件中已经记录了项目的打包配置)不用再像第一次那样逐步配 置,就可以很方便的打包。
6.进入JAR Manifest Specification对话框,勾选Generate the manifest in the workspace(生成manifest文件)和其下的Save the manifest in the workspace,将生成的manifest.mf文件保存在项目的根目录下
PS:
若你提前在项目中创建了manifest.mf文件可以勾选Use existing manifest from workspace选项卡
7.Seal contens中选择默认的Seal some packages,在Select the class of the application entry point中填入包含main()方法的类-->finish
11.测试导出的jar包是否能够执行:
方法一:双击jar包,若能弹出界面不报错,说明成功。
方法二:进入dos命令行,进入到jar所在路径,运行命令:java -jar 包名.jar,若能弹出界面且不报错,说明导出成功。
至此,导出jar包的过程就结束了。
-----------------------------------------------------------------------
modified @20190814
近期,我用该方法成功打包java项目,但是在运行的时候报错:java.lang.NoClassDefFoundError:xxx/xxxxxx/xxxxx/,如下:

用反编译工具jd-gui打开该jar包,找到报错中缺失的类点击时无反应,如图:NoClassDefFound中的类和正常的类对比图:


又将jar包导入eclipse中 发现有些文件只有包没有类,如图:

所以大胆推测,可能是打包不完整所致。
解决办法:
打包成可运行的jar文件。
这样打好的包奇迹般的可以运行了,用jd-gui和eclipse打开查看源码也不会发生上面的情况了。有不同见解或补充欢迎留言一起讨论。