欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第23章:包的定义及使用:课时104:生成jar文件

程序员文章站 2024-02-19 16:45:34
...

当一个项目开发完成之后一定会存在有大量的*.class文件,那么对于这些文件的管理往往可以利用一种压缩结构的形式来进行处理,而这样的结构在Java之中就被称为Jar文件,如果要想将程序打包为Jar文件,那么可以直接利用jdk中提供的jar命令。
在最原始的时候如果要想知道jar命令的时候直接输入jar即可,而在JDK1.9之后为了统一化,所以需要使用“–help”查看相关的说明。
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第23章:包的定义及使用:课时104:生成jar文件
下面通过程序的具体演示来实现jar的使用与配置的操作。
1.定义一个程序类,这个类的代码如下:

package cn.mldn.util ;
public class Message {
	public String getContent() {
		return "www.mldn.cn";
	}
}

2.对程序进行编译与打包处理:
对程序打包编译:javac -d . Message.java;
此时会形成cn的包,包里面有相应的子包与*.class文件,将其打包为mldn.jar:jar -cvf mldn.jar cn
—“-c”:创建一个新的jar文件;
—“-v”:得到一个详细输出;
—“-f”:设置要生成的jar文件名称,本处定义的是“mldn.jar”;
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第23章:包的定义及使用:课时104:生成jar文件
3.每一个*.jar文件都是一个独立的程序路径,如果要想在Java程序之中使用此路径,则必须通过CLASSPATH进行配置;
SET CLASSPATH=.;C:\Users\Administrator\Desktop\mldndemo\mldn.jar
4.建立测试类测试类,直接导入Message类并且调用方法:

package cn.mldn.test ;
public class TestMessage {
	public static void main(String args[]) {
		cn.mldn.util.Message msg = new cn.mldn.util.Message() ; // 实例化类对象
		System.out.println(msg.getContent()) ;
	}
}

随后就可以正常编译TestMessage类并且使用这个类:
1.编译程序类:javac -d . TestMessage.java
2.解释程序:java cn.mldn.test.TestMessage
如果此时程序编译通过之后,但是由于CLASSPATH发生了改变,类无法加载到了,则执行TestMessage类的时候将会出现如下的错误提示:
Exception in thread “main” java.lang.NoClassDefFoundError: cn/mldn/util/Message
出现这种错误只有一种情况:*.jar包没有配置正确。

JDK1.9之后出现的模块化操作
在JDK1.9以前所有的历史版本之中实际上提供的是一个所有类的*.jar文件(rt.jar、tool.jar),在传统的开发之中只要启动了Java虚拟机,那么就需要加载这几十兆的类文件;
在JDK1.9之后提供了一个模块化的设计,将原本很大的要加载的一个*.jar文件变成了若干个模块文件,这样在启动的时候可以根据程序加载指定的模块(模块中有包),就可以实现启动速度变快的效果。