900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java cmd 编译jar_Java程序在命令行下编译运行打Jar包

java cmd 编译jar_Java程序在命令行下编译运行打Jar包

时间:2018-11-19 07:13:17

相关推荐

java cmd 编译jar_Java程序在命令行下编译运行打Jar包

本次练习在命令行下编译运行java程序,以及将java程序打jar包运行。

一、本程序有三个类,

Teacher类:

public class Teacher {

private String name;

private String subject;

Teacher() {};

Teacher(String name, String subject) {

this.name = name;

this.subject = subject;

}

public String getSubject(){

return this.subject;

}

public void teach() {

System.out.println(name + " is teaching " + subject);

}

}

Student类:

public class Student{

private String name;

public Student(){};

public Student(String name) {

this.name = name;

}

public void study(Teacher teacher){

teacher.teach();

System.out.println(name + " is studying " + teacher.getSubject());

}

}

Test类:

public class Test{

public static void main(String[] args) {

Student stu = new Student("Jack");

Teacher teacher = new Teacher("Teacher wang", "Program");

stu.study(teacher);

}

}

二、利用Windows命令行编译运行程序:

javac Student.java

javac Teacher.java

javac Test.java

运行上述命令后,目录下会生成同名的class文件。

然后就可以执行下面的命令运行本程序:

java Test

运行结果:

Teacher wang is teaching Program

Jack is studying Program

三、如何将以上几个类打包成应用程序?

首先,在程序目录下新建一个manifest.mf文件,文件里写如下内容:

Main-Class: Test

然后运行如下一行命令:

jar cvfm test.jar manifest.mf Teacher.class Student.class Test.class

会打印出下面的信息:

已添加清单

正在添加: Teacher.class(输入 = 806) (输出 = 452)(压缩了 43%)

正在添加: Student.class(输入 = 748) (输出 = 449)(压缩了 39%)

正在添加: Test.class(输入 = 478) (输出 = 321)(压缩了 32%)

而且目录下会生成一个test.jar,是个压缩文件。到此时Jar包已经生成,目录如下图:

其中META-INF文件夹下的内容如下:

该MANIFEST.MF的内容如下:

如何运行该Jar包呢?

在命令行运行如下命令即可:

java -jar test.jar

输出结果:

Teacher wang is teaching Program

Jack is studying Program

注意:如果在运行java -jar test.jar 命令运行程序时,出现如下错误:

test.jar中没有主清单属性

那么请查看jar包中的MANIFEST.MF文件,是否没有Main-Class那一行。

为什么会出现这种错误?

因为清单文件的格式有严格要求,注意:

Main-Class: Test的:后必须要有一个空格。而且这一行末尾必须再输入一个回车键,相当于两行。

附:

jar命令的简介(可运行”jar”命令来查看各个参数用法):

-c 创建一个jar包 -t 显示jar中的内容列表 -x 解压jar包 -u 添加文件到jar包中 -f 指定jar包的文件名 -v 生成详细的报造,并输出至标准设备 -m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置) -0 产生jar包时不对其中的内容进行压缩处理 -M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置 -i 为指定的jar文件创建索引文件 -C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。