java编译成.class文件,打成.jar包
关键词: java javac jar
1. 到现在我才知道.class,.jar到底是个什么情况,以前只是知道名字。
多的先不说,今天学习一下,基本的,如何在linux命令行下,纯文本的方式开发java程序。
先写一个最简单的java程序Test.java:
1 2 3 4 5 6 7 8 |
[crayon-688e63f0bd2dd871910610 class="java"] class Test{ public static void main( String []args){ System.out.println("Hello world"); System.out.println(args[0]); } } |
[/crayon]
这是一个java代码文件,需要先编译成java字节码后方可用java虚拟机执行。
1 2 |
[crayon-688e63f0bd2e1139835341 class="java"] javac Test.java |
[/crayon]
该命令会在当前文件下生成一个Test.class的文件。
如何执行呢? 通过:
1 2 |
[crayon-688e63f0bd2e4972818742 class="java"] java Test |
[/crayon]
哪jar是什么东西呢? 我们都知道,随着程序的增大,不可避免的会增加很多文件,这些文件如何组织在一起,相互间的调用,是通过包来实现的,最终把一组文件打包在一起,就是jar包。
首先,Test.java增加一行所属包:
1 2 3 4 5 6 7 8 9 |
[crayon-688e63f0bd2e6607384514 class="java"] package hello; class Test{ public static void main( String []args){ System.out.println("Hello world"); System.out.println(args[0]); } } |
[/crayon]
经过javac编译成Test.class,我们创建一个文件夹hello,并放入Test.class
创建jar包,那这个jar包有什么特性呢,需要一个描述文件,在java里规定为:MANIFEST.MF。
MANIFEST.MF的内容,可以先通过jar cvf hello.jar hello
命令,然后进行解压jar -xf hello.jar
,会发现之前没有的文件META-INF/MANIFEST.MF
,修改MANIFEST.MF在下面增加Main-class: hello.Test
,指明main函数所在类:
Manifest-Version: 1.0
Created-By: 1.8.0_65 (Oracle Corporation)
Main-class: hello.Test
然后进行带描述文件的jar包打法:
jar cvfm hello.jar META-INF/MANIFEST.MF hello
生成了hello.jar,执行方法:
java -jar hello.jar 哈哈
系统显示:
Hello world
哈哈