本文中的 eclipse 专指 eclipse for java ee 版本。

eclipse 项目(打包)导出

在右击项目,弹出菜单中选择 WAR File,导出可以部署到服务器的 war 包。或者在弹出菜单中选择 Export 进一步选择项目导出的格式,比如常见的,Java 项下的 JAR file。导出下一步中 destination 表示导出目的地,可以直接保存到本地服务器,Tomcat 会自动解压 war 包,相当于自动部署。

JAR Java Archive,Java 档案(包)
WAR Web Archive, (java)web 档案(包)

引用了外部 jar 包的 eclipse 项目导出

引用了外部的 jar 包是比较复杂的一种,因为需要特别定义 jar 清单规范,将用到的 jar 包、package 等资源密封到导出内容中。

一般没有依赖外部资源的情况下,会直接生成 MAINFEST.MF 文件,存放在 META-INF 文件夹下。

Manifest-Version: 1.0
Class-Path: 
Main-Class: 

第一行定义版本,第二行指出外部 jar 的路径,第三行是主类指示,第四行是空行。

MAINFEST.MF 编写需要严格规范,稍有不慎将会导致 jar 执行无效。

  • 第一行不能空,行与行之间不能有空行,每一行的最后一个字符不能是空格
  • 最后一行一定是空行
  • 每个属性的名称和值之间(冒号后面)一定要有空格
  • 文件的每一行都不能超过72个字节(一般是70个ASCII字母加上回车换行符);如果72个字节不够用,则另起一行并以空格开头:以空格开头的行都被视为前一行的续行。

在自定了 MAINFEST.MF 后,就需要在 指定清单时,从工作区选择已存在的清单。

JAR file 与 Runnable JAR file 选项的区别

主要体现在执行时,前者需要指定依赖的 jar 包文件和可执行包名,后者不需要,具体表现在 MAINFEST.MF 文件内对于 Class-Path 和 Main-Class 的定义上。