我们在正常开发中,都会引入很多jar包,打开jar包会发现里面存储的都是class文件。那么jdk是怎么打的jar包那。jar包又是有什么用那?我们下面写了一个很简单的一个小程序
package packa;
import packb.Test2;
class Test1
{
public static void main(String[] args)
{
System.out.println("Hello World!");
Test2 t2 = new Test2();
t2.show2();
}
}
package packb;
public class Test2
{
public void show2()
{
System.out.println("show2 Hello World!");
}
}
cmd执行java命令
javac -d . Test2.java
javac -d . Test1.java
这是会在当前目录下创建packa,packb两个文件夹,同时将Test1和Test2编译到对应的文件夹下。
这时候我们把两个包打成jar包,jar -cf test.jar packa packb;这时候会发现在当前目录下已经生成了test.jar包,其实我们使用任何工具生成jar包底层都是调用的jdk的jar命令
那么我们怎么才能执行这个main函数那,
我们需要设置classpath目录,到main函数所在class文件的那一层;
set classpth=F:\test\test.jar
java packa.Test1
这是执行main函数就会成功了;
那么javac是怎么编译的那,我们打开jdk的lib包发现下面有一个tools.jar的包。我的jdk安装目录是:C:\Program Files\Java\jdk1.7.0_07\lib
我们把tools.jar包重命名之后发现编译命令不好使了,这是什么情况那,这说明java编译相关的工具在tools.jar中。
打开:tools.jar\sun\tools\javac发现这里面也有一个main函数,main函数是有独立运行能力的。其实java编译java文件就是执行的这个mian函数