一, 什么是jar包

java中, 源代码文件是*.java,   编译后就生成若干class文件.     这些class文件可以被各平台的jvm虚拟机执行.
java还提供1个工具, 可以将这些class文件打包成若干个包裹.  这些包裹就是所谓的jar包了.

二, jar包的作用.

jar包的作用主要分两点
1.  用于发布产品.   
比如你写了若干个类, 但是并不想公开源代码,  你可以把编译出的class文件打包成jar包, 附加上说明书发布.
2.   方便项目管理
项目中, 可以把公共常用的, 不常改动的class文件按照分类规则打包成若干个jar包.

三, 如何生成jar包.

下面用1个简单例子来说明.
首先在任意目录编写1个简单的类 Test_jar1.java
package pkg1.pkg2;public class Test_jar1{private int i;public Test_jar1(int i){this.i = i;}public void f(){System.out.printf("Test_jar: i is %d !\n", this.i);}
}

可以见到我为这个类添加了1个包层: pkg1.pkg2
也就是说这个类是属于pkg2包的, 而pkg2包是属于pkg1包的.  这里的包可以简单地理解成文件夹..
接下来在当前目录执行下面的编译命令:
javac -d . Test_jar1.java

那么命令就会把源代码文件编译成Test_jar1.class文件, 并放入pkg1/pkg2文件夹中(自动生成)

gateman@TFPC jar $ tree
.
|-- pkg1
|   `-- pkg2
|       `-- Test_jar1.class
`-- Test_jar1.java2 directories, 2 files

也就是说 pkg1 这个文件夹就是我们编译出来的类文件包.     我们需要把这个文件夹打包成1个jar包.

执行如下命令:
jar cvf 包名.jar 你想打包的包目录
gateman@TFPC jar $ jar cvf Test_jar.jar pkg1/
已添加清单
正在添加: pkg1/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: pkg1/pkg2/(输入 = 0) (输出 = 0)(存储了 0%)
正在添加: pkg1/pkg2/Test_jar1.class(输入 = 581) (输出 = 378)(压缩了 34%)
gateman@TFPC jar $ ls
pkg1  Test_jar1.java  Test_jar.jar
gateman@TFPC jar $

可以见到执行命令后, 当前目录多了1个Test_jar.jar 文件,  这个就是生成出来的jar包.

四, 如何使用jar包.

一般项目都有个位置专门存放jar包.
在这里我们可以把刚才生成的jar包Test_jar..jar搬到任意位置.
例如我就放在目录:
/home/gateman/Studies/Java/java_start/Java_1/jar/generated
gateman@TFPC generated $ pwd
/home/gateman/Studies/Java/java_start/Java_1/jar/generated
gateman@TFPC generated $ ls
Test_jar.jar

然后修改/etc/profile , 把这个jar包的full路径,  添加到CLASSPATH 这个环境变量中.
gateman@TFPC Java_1 $ echo $CLASSPATH
.:/usr/lib/jvm/java-7-sun/lib:/usr/lib/jvm/java-7-sun/jre/lib:/usr/share/ant/lib/ant-launcher.jar:/home/gateman/Studies/Java/java_start/Java_1/jar/generated/Test_jar.jar

注意要带上包名

如果是ant编译运行的, 最好吧包路径也写进build.xml中.
然后在编写1个类测试这个包:
package Package_kng;import pkg1.pkg2.*;public class Pkg_1{public static void f(){Test_jar1 t = new Test_jar1(2);t.f();  }
}

注意开头import 那个包就ok了.

测试通过:
[java] Test_jar: i is 2 !

jar包的生成和使用简单例子相关推荐

  1. jar包的生成及运行

    Hello, 大家好,我们见面了,今天是2015年7月30日,我在青岛,你好吗? 这里总结下刚学习到的jar包的生成和运行,网上的资料一搜一大片,我这里总结下适用的 一:jar包的生成: 1:命令行, ...

  2. Idea打Jar包并生成exe文件(三:Idea打Jar包)

    转载自:https://blog.csdn.net/dominic_z/article/details/82791790 我们先看看实例项目 这个项目里包括 一个数据文件,位于'data/data' ...

  3. 启动jar包并生成日志的linux脚本

    启动脚本 nohup java -Xms300m -Xmx300m -jar $1 >log/$2 2>&1 & 使用方式 建立一个.sh结尾的脚本,里面放入此代码. 需要 ...

  4. linux 执行jar包 不生成日志文件,jar包在linux本地运行成功, 但是jenkins构建失败...

    一个springboot服务的jar包在linux本地运行成功, 但是jenkins构建失败,报错,求解决 我的jenkins shell脚本 BUILD_ID=dontKillMe java -ja ...

  5. 用RNN生成文本的简单例子(过程详细)

    将文章字母编码 import time from collections import namedtupleimport numpy as np import tensorflow as tfwith ...

  6. IDEA中MAVEN项目打JAR包的简单方法

    Idea中为一般的非Web项目打Jar包是有自己的方法的,网上一搜就能查到很多. 但是如果是为Maven项目打Jar包,其实是很简单的,因为maven本身就有打Jar包的命令. 最简单的方法 首先是在 ...

  7. java生成cmd jar包_Java程序运行机制及cmd编译运行探究(二) cmd编译运行Java程序并打成jar包...

    目标:写一个RandomUtils.java工具类,返回一个随机数,并把这个类的字节码文件打成jar包 在Java运行机制及cmd编译运行探究(一)准备工作一文中,我总结了一部分要用到的cmd及编译运 ...

  8. 想要拥有自己的jar包吗?------超级简单的打jar包教程~~~

    嗨喽-小伙伴们,又有好久没更新了呜呜呜, 今天我们来聊聊jar包.作为程序员,日常工作就是打自己的jar包和学别人的jar包. 首先,我们来聊聊啥是jar包: 一. 什么是jar包? jar包, Ja ...

  9. 使用Maven 实现打包生成一个可执行jar包:附详细配置解释说明

    1. 需求 项目打包,满足以下要求: 1.整个项目打一个Zip包下面包括应用程序.应用程序依赖的jar包.说明文档 2.项目打的jar包可以执行不同类里的Main函数 3.项目源码打的jar包要与依赖 ...

最新文章

  1. 推荐三款scrum看板协作工具
  2. my-innodb-heavy-4G.cnf配置文件注解
  3. WeightedRandomSampler 理解了吧
  4. Python3基础教程:可变参数和关键字参数
  5. 【MySQL随手记】字符集编码的查看、指定与修改语句
  6. mysql行锁同索引键问题_mysql 锁问题 (相同索引键值或同一行或间隙锁的冲突)
  7. express中的错误处理
  8. 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost...
  9. Netty文章目录汇总
  10. 手动批量下载ts文件并合并
  11. S32K144(19)FlexIO
  12. 新浪微博API错误代码大全
  13. Jquery.ajax使用
  14. ubuntu snap 安装的nextcloud 忘记管理员密码,重新设置密码。
  15. 最短路径和最少花费问题--动态规划
  16. InnoDB:page_cleaner:1000ms intended loop took [xxx]ms解决
  17. HTML中input输入框动态模糊匹配
  18. FPGA学习经验(BBS论坛)
  19. python爬取音乐网站排行榜_通过Python轻松访问音乐网站歌曲,python,爬取
  20. MySQL鲜为人知的排序方式

热门文章

  1. 【Flask项目2】生成token和验证token(11)
  2. [register]-ARMV8-aarch64的通用寄存器介绍和总结
  3. Windows内存管理学习笔记(二)—— 物理内存的管理
  4. Windows句柄表学习笔记 —— 句柄表全局句柄表
  5. 3.APC的挂入过程
  6. 【LXC】 在 LXC 中使用 snap 包管理工具
  7. 计算字符串的实际长度
  8. HTML之iframe内联框架
  9. 1.2.2 认识各个硬件部件
  10. 4.1.7 文件共享