目录
  • 将类文件打包为jar包
  • 1.写类文件
  • 2.编译
  • 3.测试
  • 4.打jar包
  • jar包应该怎么打?
  • 1.首先确保你的项目
  • 2.选中你的项目,点右键
  • 3.选择runnable jar file
  • 4.如下图,直接看图
  • 5.然后点finish

将类文件打包为jar包

为实际项目写了一个工具类,但是每次使用时都需要打开项目点击运行。突然想,不如将这个类打成jar包这样后续就可以直接运行了。

说做就做。

1.写类文件

java打包工具类为jar包 java类打包成jar_java打包工具类为jar包

大概就这么个样子。

注意,这里用到了外部依赖,也就是为什么要写这篇文章的原因。

本例中的外部依赖包为:commons-codec-1.14.jar

2.编译

javac -encoding UTF-8 -classpath .;./commons-codec-1.14.jar -d . CipherTest.java
或者:
javac -encoding UTF-8 -cp .;./commons-codec-1.14.jar -d . CipherTest.java
  • encoding 防止中文乱码
  • -classpath 指定class文件路径
  • -d . 会在当前执行目录下生成 一个java所在的包名的(这里我的是test)目录,以及编译后的class文件
  • 指定要被编译的java文件

这样就编译为class文件了

3.测试

java -cp .;commons-codec-1.14.jar CipherTest 11 22 33
  • -cp 指定依赖包,多个用;分割

  • CipherTest: 是运行的主类,后面跟着命令行参数

这样测试就通过了。

4.打jar包

jar -cvf cipher.jar CipherTest.class

执行运行,发现找不到主类。解压查看jar包内容如下:

java打包工具类为jar包 java类打包成jar_java打包工具类为jar包_02

进入META-INF查看文件:

接下来对这个文件进行处理:

添加字段:

java打包工具类为jar包 java类打包成jar_pycharm_03

添加:

Main-Class: CipherTest

注意冒号后面有个空格,这个是指定主类,即启动类。

Class-Path: commons-codec-1.14.jar

指定依赖包,默认jar包根目录,有多个依赖的话,Windows用;分隔。Linux用空格分隔。

之后将依赖包拖入jar包。

最终目录结构:

java打包工具类为jar包 java类打包成jar_java_04

最后运行jar包,正常工作。

jar包应该怎么打?

1.首先确保你的项目

能正常启动并运行

2.选中你的项目,点右键

选export(导出),如下图:

java打包工具类为jar包 java类打包成jar_java打包工具类为jar包_05

3.选择runnable jar file

下一步,如下图:

java打包工具类为jar包 java类打包成jar_jar包_06

4.如下图,直接看图

java打包工具类为jar包 java类打包成jar_jar_07

5.然后点finish

后面一路过,不用管警告,一直点OK!

执行完这5步,在自己上面选择的路径下面就会有相应的jar包生成,如下图:

java打包工具类为jar包 java类打包成jar_java_08

下面,我们来详细说明一下两种打jar包的方式有什么区别

首先,用自己的压缩工具打开刚才打成的jar包,可以看到一个MANIFEST.MF文件,如下图:

java打包工具类为jar包 java类打包成jar_java_09

打开它之后的部分信息如下:

java打包工具类为jar包 java类打包成jar_jar_10

可以看到,这种方式把引用的jar包和自己的jar包都混合到了一起!(把需要的jar包和库提取到jar里)

再看另一种方式:

java打包工具类为jar包 java类打包成jar_jar_11

这种方式打成jar包后如下图:(将需要的jar包和库提取到子目录中)

java打包工具类为jar包 java类打包成jar_jar_12

两种方式都能正常启动,只是方式不一样!!!

java打包工具类为jar包 java类打包成jar_jar包_13

java打包工具类为jar包 java类打包成jar_jar_14