1、jar包的初认识:点击打开链接
2、jar命令:即归档命令 (java Archive File)
jar文件类似zip文件的压缩格式。是java的一种文档格式。
但比zip文件多一个META-INF/MANIFEST.MF文件。
3、jar命令示例:
(1)文件目录为:E:\hunnu\javabase\ch2\common
编译: javac -d . SystemIn.java
执行: java com.my.util.SystemIn
打包: jar cvf myutil.jar com/my/util/SystemIn.class
package com.my.util;
import java.util.Scanner;
public class SystemIn{
public static void main(String[] args){
System.out.println(nextLine());
}
public static String nextLine(){
String value = "";
Scanner sca = new Scanner(System.in);
try{
value = sca.nextLine();
}catch(Exception e){
e.printStackTrace();
}
return value;
}
}
(2)生成jar包之后就可以在编译、执行其他的Java程序的时候导入jar包(使用定义好的类和属性)。
(此时的目录为:E:\hunnu\javabase\ch2\ex03)
编译: javac -cp ../common/myutil.jar -d . HelloWorld.java
执行: java -cp .;../common/myutil.jar p1.p2.HelloWorld
注:
-cp 即:classpath (还记得在配置JDK的时候需要配置环境变量吧)
思考:
为什么编译的时候没有“.;”而在执行的dos命令当中存在“.;”?
package edu.hunnu.test;
import com.my.util.SystemIn;
public class HelloWorld{
public static void main(String[] args){
String value = SystemIn.nextLine();
System.out.println(value);
}
}
特别解释:
编译的时候,需要用-cp指定第三方class 及源代码
执行的时候,需要用-cp指定第三方class和本地class,指定class的时候,如果指定了第三方,就不会再搜索
本地的class,故需加上.;
编译的时候,不需要搜索本地的class,故不需要加.;因为编译的时候,本地是源代码,还没有class
注: