【Java学习】jar打包

摘要:
对于META-INF/MANIFEST.MF,您可以查看META-INFMANIFEST.MF的介绍。-C指定要打包的目录。这个在目录后面表示目录中的所有文件,Outputarchitecture选择jar包目标目录。双击AvailableElements中要添加到jar包的文件,将其添加到左侧的jar包目录中,如下图5所示。)单击CreateManifest,选择文件路径以放置MANIFEST.MF,然后单击OK。

主线:编译 - 打包 - 运行

准备工作:

1. 手动打可直接执行的jar包

1) 先使用javac编译java文件,得到class文件

2) 新建文件,名字任起,比如可以叫manifest,内容如下(注意:1. 冒号后面加一个空格,2. 最后必须回车到新的空行,否则出错,如下面内容就必须在addJarPkg后面再输入一个回车)

Manifest-Version: 1.0
Main-Class: addJarPkg

3) 把编译好的class文件和第2步新建的文件放入指定文件夹,如test

4) 在cmd中运行命令

jar -cvfm main.jar manifest -C test .

注意路径问题,其中

  • test后面的 “.” 代表所有文件
  • jar后面的-m选项会将第2步新建的文件合并到 jar包中的 META-INF/MANIFEST.MF,也就是更新清单配置文件。关于META-INF/MANIFEST.MF,可查看META-INF/MANIFEST.MF介绍
  • -C 后面指定要打包的目录, 目录后面的 . 代表目录下所有文件

2. 使用intellij idea工具打可直接执行的jar包

1) 点击项目

2) 点击intellij idea左上角的“File”菜单 -> Project Structure

【Java学习】jar打包第1张

3)点击"Artifacts" -> 绿色的"+" -> "JAR" -> Empty

【Java学习】jar打包第2张

4) Name栏填入自定义的名字,Output ditectory选择jar包目标目录,Available Elements里双击需要添加到jar包的文件,即可添加到左边的jar包目录下,具体看下图

 【Java学习】jar打包第3张

5)点击Create Manifest,选择放置MANIFEST.MF的文件路径(直接默认项目根目录就行,尽量不要选别的路径,可能会造成不必要的错误),点击OK。

【Java学习】jar打包第4张

6) 点击Main Class后面选择按钮

【Java学习】jar打包第5张

7) 弹出框中选择需要运行程序入口main函数,点击OK

【Java学习】jar打包第6张

8) 以上设置完之后,点击OK

9) 点击菜单中“Build” -> "Build Artifacts"

【Java学习】jar打包第7张

10) 双击弹出框中待生成jar包下面的build即可,如下图

 【Java学习】jar打包第8张

至此使用Intellij idea生成可直接执行jar包完成。

方法一:通过jar命令

jar命令的用法:

下面是jar命令的帮助说明:

用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...

选项包括:
    -c  创建新的归档文件
    -t  列出归档目录
    -x  解压缩已归档的指定(或所有)文件
    -u  更新现有的归档文件
    -v  在标准输出中生成详细输出
    -f  指定归档文件名
    -m  包含指定清单文件中的清单信息
    -e  为捆绑到可执行 jar 文件的独立应用程序
        指定应用程序入口点
    -0  仅存储;不使用任何 ZIP 压缩
    -M  不创建条目的清单文件
    -i  为指定的 jar 文件生成索引信息
    -C  更改为指定的目录并包含其中的文件
如果有任何目录文件,则对其进行递归处理。
清单文件名、归档文件名和入口点名的指定顺序
与 "m"、"f" 和 "e" 标志的指定顺序相同。

示例 1:将两个类文件归档到一个名为 classes.jar 的归档文件中:
       jar cvf classes.jar Foo.class Bar.class
示例 2:使用现有的清单文件 "mymanifest" 并
           将 foo/ 目录中的所有文件归档到 "classes.jar" 中:
       jar cvfm classes.jar mymanifest -C foo/ .

下文假设编译后的class文件在bin目录下

一、打包成一般的jar包

输入如下命令即可:

Cmd代码  收藏代码
  1. jar cvf counter.jar -C bin .  

其中,“-C bin”实际上是告诉jar命令先cd到bin目录下,再在此目录执行没有参数“-C bin”的命令,等价于:

Cmd代码  收藏代码
  1. cd bin  
  2. jar cvf counter.jar . // "."代表当前路径  

 

二、打包成可运行的jar包

要打包成可运行的jar包,有两种方法,一是手动创建MANIFEST.MF文件,并在其中指定主类;二是使用jar的-e参数指定可运行jar包的入口点(即main类的完全名称).

以Java源代码行数统计程序的打包为例,演示如何打包:

1. 手动创建MANIFEST.MF文件:

1)首先编辑MANIFEST.MF文件,内容如下:

Mf代码  收藏代码
  1. Manifest-Version: 1.0  
  2. Created-By: rsljdkt  
  3. Class-Path: .  
  4. Main-Class: Main  

说明:

  第一行指定清单的版本,若无,则JDK默认生成:Manifest-Version: 1.0

  第二行指明创建的作者,若无,则JDK默认生成Created-By: 1.6.0_22(Sun Microsystems Inc.)

  第三行指定主类所在类路径,

  第四行指明程序运行的主类

2)使用jar命令进行打包:

Cmd代码  收藏代码
  1. jar cvfm counter.jar MANIFEST.MF -C bin .  

 说明:

  参数f:指定打包后的包名。

  参数m:指定自定义的MANIFEST.MF清单文件,否则,JDK会自动生成不包含Main-Class的默认清单。

  参数c:指定是创建新的归档文件。

  参数v:在标准输出中生成详细输出,该选项是可选的。

2. 使用-e参数指定入口点:

执行如下命令即可:

Cmd代码  收藏代码
  1. jar cvfe counter.jar Main -C bin .  

 

方法二:使用Eclipse的Export功能:

一、打包成一般的jar包:

步骤如下:

  1)在要打包的项目上右击,选择Export

  2)在弹出的窗口中,选择Java -> JAR File,然后点击next按钮

  3)在JAR File Specification窗口中,设置打包成的文件名和存放位置,点击两侧next

  4)在JAR Manifest Specification窗口中,设置MANIFEST.MF清单文件的配置,

    若仅仅打包成单纯的jar包的话,不用做任何修改,采取默认即可

    若打包成可执行jar包的话,可以使用已存在的MANIFEST文件或者直接选择Main class

  5)点击Finish按钮,完成打包。

二、打包成可运行的jar包

步骤如下:

  1)在要打包的项目上右击,选择Export

  2)在弹出的窗口中,选择Java -> Runnable JAR File,然后点击next按钮

  3)在Runnable JAR File Specification窗口中,选择Launch configuration和Export destination

  4)点击Finish按钮,打包完成。

转载:https://www.cnblogs.com/jayworld/p/9765474.html

免责声明:文章转载自《【Java学习】jar打包》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C文件的格式化工具(astyle)19. Vue+i18n 实现多语言翻译下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ANT之build文件讲解

ANT build.xml文件详解(一) Ant的概念  可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道 make这个命令。当编译Linux内核及一些软件的源程序时,经常要用这个命令。Make命令其实就 是一个项目管理工具,而Ant所实现功能与此类似。像make,gnumake和nmake这些编译工具都有 一定...

Linux系统下用find命令查找最近修改过的文件

Linux的终端上,没有windows的搜索那样好用的图形界面工具,但find命令确是很强大的。 比如按名字查找一个文件,可以用 find / -name targetfilename 。 唉,如果只知道名字,不知道地点,这样也不失为一个野蛮有效的方法。 按时间查找也有参数 -atime 访问时间 -ctime 改变状态的时间 -mtime修改的时间。但...

使用Nexus创建私服

原文链接:http://www.cnblogs.com/helong/articles/2254446.html 注意:nexus2.6.0版本以后不支持jdk6了,必须jdk1.7或以上。 参考:http://blog.csdn.net/shandian534/article/details/8987349 -----------------------...

IntelliJ IDEA Ultimate 6.2 版本免费试用期过期后如何破解

今天早上一打开IntelliJ IDEA时弹出“InteliJ IDEA License Activation”界面,需要激活新的license才可以使用。下面直接使用Activation code进行激活,步骤如下: (1)下载破解文件破解文件JetbrainsCrack-2.7-release-str.jar,点击就可以进入下载页面。 (2)将下载下来...

cmake 备忘录

记录使用 cmake 时的常见需求和解决办法。 目录 1. 用于执行CMake的.bat脚本 2. 判断平台:32位还是64位? 3. 判断Visual Studio版本 4. 判断操作系统 5. 判断是Debug还是Release等版本 6. 根据Debug/Release添加不同的库目录 7. Visual Studio属性与对应CMake实现方法...

使用cwRsync实现windows下文件定时同步

1.参考文献: 使用cwRsync实现windows下文件定时同步(备份) 文件同步工具CwRsync的使用方法及常用命令详解 2.背景: 当前的SCADA架构中,有1台Server,5台FE,还有1台Client。其架构如下图所示: 虽然叫法不同,但是他们的安装文件和配置文件是完全一样的。并且大多数情况下,也建议这些服务器上面的配置文件保持一致,这样只...