使用javac、jar、java命令行编译、打包、运行java代码

实验一、使用javac命令编译多个目录下的多个java文件

1.项目目录结构(外层目录:/software/javademo)

	org>jack>demo>a>a.java
	org>jack>demo>b>b.java
	org>jack>demo>c>c.java

2.文件源码

/*a.java*/
package org.jack.demo.a;
public class a{
	public String show(String name){
		return name+",hello!(org.jack.demo.a.a.show())";
	}
}
/*b.java*/
package org.jack.demo.b;
import org.jack.demo.a.a;

public class b{
	public static void main(String[] args){
		System.out.println("package org.jack.demo.b.b.main(String[] args)");
		a _a =new a();
		String str=_a.show("xiaoming");
		System.out.println("str="+str);
		System.out.println("ok");
	}
}
/*c.java*/
package org.jack.demo.c;

public class c{
}

3.编写配置文件javacfile(/software/javademo/javacfile)

org/jack/demo/a/a.java
org/jack/demo/b/b.java
org/jack/demo/c/c.java

4.创建输出目录

[root@localhost javademo]# mkdir classes

5.编译

[root@localhost javademo]# javac @javacfile -d classes

6.查看编译后结果

[root@localhost javademo]# ls -R classes
classes:
org
classes/org:
jack
classes/org/jack:
demo
classes/org/jack/demo:
a b c
classes/org/jack/demo/a:
a.class
classes/org/jack/demo/b:
b.class
classes/org/jack/demo/c:
c.class

7.将编译后的class文件打包成普通jar(即:不可运行的jar)

[root@localhost javademo]# cd classes
[root@localhost classes]# jar cvf jack.jar *

8.运行这个普通jar

[root@localhost classes]# java -cp jack.jar org.jack.demo.b.b

输出如下:
package org.jack.demo.b.b.main(String[] args)
str=xiaominghello,(org.jack.demo.a.a.show())
ok

9.删除这个普通jar

[root@localhost classes]# rm -fv jack.jar

10.打包成可运行的jar

[root@localhost classes]# jar -cvfe jack2.jar org.jack.demo.b.b *

11.运行这个可运行的jar

[root@localhost classes]# java -jar jack2.jar
输出如下:
package org.jack.demo.b.b.main(String[] args)
str=xiaominghello,(org.jack.demo.a.a.show())
ok

12.删除这个可运行的jar

[root@localhost classes]# rm -fv jack2.jar

实验二、使用javac编译多个目录下的java文件引用已经编译好的class文件和jar包

1.准备class文件(最外层/software/javademo2)

1.1 目录结构

			org/jack
				a.java
				b.java

1.2 文件源码

/*a.java*/
package org.jack;

public class a{
	public String show(String name){
		return name+",hello!";
	}
}
/*b.java*/
package org.jack;

public class b{
	public String show(String name){
		return name+",this is org.jack.b.show(String name)";
	}
}

1.3 编译这个文件到 classes_ref里

[root@localhost javademo2]# mkdir classes_ref
[root@localhost javademo2]# javac org/jack/*.java -d classes_ref

1.4 删除源码目录org

[root@localhost javademo2]# rm -rvf org

2. 准备jar包

2.1 目录结构

		org>common>util.java

2.2 文件源码

/*util.java*/
package org.common;

public class util{
	public int add(int x,int y){
		return x+y;
	}
}

2.3 编译成class文件

[root@localhost javademo2]# mkdir jar
[root@localhost javademo2]# javac -d jar org/common/util.java

2.4 将生成的class文件打包成jar包

[root@localhost javademo2]# cd jar
[root@localhost jar]# jar -cvf common.jar *
[root@localhost jar]# ls

common.jar org

2.5 将common.jar移动到lib(/software/javademo2/lib)目录下

[root@localhost jar]# mkdir ../lib
[root@localhost jar]# mv common.jar ../lib/common.jar

2.6 删除jar和org目录

[root@localhost jar]# cd ..
[root@localhost javademo2]# rm -rvf jar
[root@localhost javademo2]# rm -vrf org

3.编写代码

3.1 目录结构(最外层/software/javademo2)

			classes_ref
				org/jack
					a.class
					b.class				
			lib
				common.jar
			org/test
				a.java

3.2 文件源码

/*test.java*/
package org.test;

import org.common.util;
import org.jack.a;

public class test{
	public static void main(String[] args){
		String name="xiaoming";
		System.out.println("a.show(\"xiaoming\")="+new a().show(name));
		int x=5,y=8;
		int h=new util().add(x,y);
		System.out.println("new util().add(x=5,y=8)="+h);					
		System.out.println("ok");
	}
}	

3.3 编译这个java文件到target目录

[root@localhost javademo2]# mkdir target
[root@localhost javademo2]# javac test.java -d target -cp classes_ref:lib/common.jar

3.4 直接运行这个class文件

[root@localhost javademo2]# cd target
[root@localhost target]# java -classpath ../classes_ref:../lib/common.jar:. org.test.test

a.show(“xiaoming”)=xiaoming,hello!
new util().add(x=5,y=8)=13
ok

3.5 将这个文件打成jar包并运行

[root@localhost target]# jar cvfe test.jar org.test.test *
[root@localhost target]# java -Xbootclasspath/a:../lib/common.jar:../classes_ref -jar test.jar

a.show(“xiaoming”)=xiaoming,hello!
new util().add(x=5,y=8)=13
ok

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackletter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值