javac、jar使用实录
因项目管理部署需要,记录一下过程,以免下次忘记了,再次使用又需要重头再来,只记录正确的操作方式,可能会提到某些错误
建立项目所在目录F:\www
案例一
其下建立项目的java源文件的包目录结构、java源文件
com\test\hello\HelloWorld.java,代码如下:
1 package com.test.hello; 2 3 public class HelloWorld{ 4 5 public void say(){ 6 System.out.println("hello world !"); 7 } 8 9 }
com\test\people\People.java,代码如下
1 package com.test.people; 2 3 import com.test.hello.*; 4 5 public class People{ 6 7 public void say(){ 8 HelloWorld hello=new HelloWorld(); 9 hello.say(); 10 } 11 12 public static void main(String[] args){ 13 People people=new People(); 14 people.say(); 15 } 16 17 }
从控制台进入F:\www目录下,运行如下两条命令,控制台输出正确结果
javac com/test/people/People.java com/test/hello/HelloWorld.java
java com/test/people/People
说明1:
从源文件中可以发现,在People.java中引用HelloWorld,然而javac编译语句写为如下语句也是可以的(源文件的顺序相反)
javac com/test/hello/HelloWorld.java com/test/people/People.java
这是否可以说明javac编译语句中源文件的引用顺序无关?【等待验证】
说明2:
上述的编译命令换为如下语句也是可以的,注意是在F:\www目录下
javac com/test/people/People.java
但是如果进入到people目录下,则无法编译
进入test目录下,键入如下语句也可以编译
javac people/People.java hello/HelloWorld.java
但是运行却必须在F:\www目录下
案例二
从控制台进入F:\www目录下,在案例一的基础上(主要是需要其中编译后的某些.class文件,看下面的命令就会明白),运行如下命令,将com/test/hello/HelloWorld.java打包为hello.jar文件,以此来测试在程序中引用第三方jar包时程序的编译与运行
jar cf hello.jar com/test/hello/HelloWorld.class
此时在F:\www目录下会得到hello.jar文件
接着键入jar tvf hello.jar命令,回车,可查看hello.jar的内容结构
再接着删除项目的hello目录(包括其下的文件),键入如下命令运行程序,控制台输出正确结果
java -cp .;hello.jar com/test/people/People
说明:
在上述删除hello目录时,可删除people目录下的People.class文件,键入如下命令进行编译
javac -cp hello.jar com/test/people/People.java
接着键入上面的运行命令,控制台输出正确结果
下面接着做一些其他的测试,我会慢慢更新
大家如果看到其他情形麻烦告知,省的我慢慢去测试,O(∩_∩)O谢谢
案例三
引用多个第三方jar包的情况
在F:\www目录下新建org/apache/service/Work.java,代码如下:
1 package org.apache.service; 2 3 public class Work{ 4 5 public void writeCode(){ 6 System.out.println("I should write java code everyday !"); 7 } 8 9 }
键入如下命令,进行编译、打包,在F:\www目录下得到apache-service_1.0.jar
javac org/apache/service/Work.java
jar cf apache-service_1.0.jar org/apache/service/Work.class
删除org目录,修改People.java源代码如下:
1 package com.test.people; 2 3 import com.test.hello.*; 4 import org.apache.service.*; 5 6 public class People{ 7 8 public void say(){ 9 HelloWorld hello=new HelloWorld(); 10 hello.say(); 11 Work work=new Work(); 12 work.writeCode(); 13 } 14 15 public static void main(String[] args){ 16 People people=new People(); 17 people.say(); 18 } 19 20 }
键入如下命令,进行编译、运行,控制台输出正确结果
javac -cp hello.jar;apache-service_1.0.jar com/test/people/People.java
java -cp .;hello.jar;apache-service_1.0.jar com/test/people/People
至此差不多测试完毕