Jar命令
当一个项目开发完成之后一定会存在有大量的*.class文件,对于这些文件的管理往往可以利用一种压缩结构的形式进行处理,而这样的结构在Java之中就叫jar文件,如果想把程序打包为Jar文件,那么可以直接利用jdk中提供的jar命令完成。
在最原始的时候如果想知道jar命令的时候直接输入一个jar命令即可,而在JDK1.9之后为了统一化所以需要使用“–help”查看相关的说明。
jar --help
下面通过程序的具体演示来实现jar的使用与配置的操作。
- 定义一个程序类,这个类代码如下:
package cn.mldn.util;
public class Message
{
public String getContent()
{
return "我是Message类";
}
}
- 对程序进行编译打包处理:
- 打包编译:javac -d . Message.java
- 此时会形成cn的包,包里有相关子类*.class文件,将其打包为mldn.jar
- jar -cvf mldn.jar cn
- “-c”:创建一个新的jar类;
- “-v”:得到一个详细输出
- “-f”:设置要生成的jar文件名,本处定义是“mldn.jar”;
- 每个*.jar文件都是一个独立的程序路径,如果想在Java程序之中使用此路径,则必须通过CLASSPATH进行配置。
set class = .;路径(cmd窗口关闭后失效)
随后可以正常编译TestMessage项目,并且使用这个类:
- 编译程序类:javac -d . *.java
- 解释程序类:java cn.mldn.test.TestMessage
如果此时程序编译通过之后,由于CLASSPATH发生了改变,类无法加载到了,则执行TestMessage类的时候将会出现错误提示:
Exception in thread “main” java.lang.NoClassDefFoundError:路径
出现这种情况只有一个错误,*.jar包没有配置正确
JDK1.9以后出现在模块化操作
- 在JDK1.9以前所有的历史版本之中实际上提供的是一个所有类的*.jar(rt.jar、tools.jar),在传统的开发之中,只要启动了java的虚拟机,就需要启动加载这几十M的类文件;
- 在JDK1.9之后提供了模块化的设计,将原本很大的一块要加载的一个*.jar文件变成了若干个模块文件,在启动的时候可以根据程序加载指定的模块(模块中有包),这样就可以实现启动速度块的效果。