天天看点

Java:javac编译java文件引入class文件和jar依赖

两个测试所需文件

public class Hello{
    public void sayHello(){
        System.out.println("Hello");
    }
}      
public class Demo{
    public static void main(String[] args) {
        Hello Hello = new Hello();
        Hello.sayHello();
    }
}      

同目录下javac编译执行

$ ls
Demo.java
Hello.java

$ javac Demo.java
$ java Demo      

引入不同目录依赖编译执行

$ ls
Demo.java
libs/
    Hello.java

$ javac -classpath ./libs Demo.java
$ java -classpath .:libs Demo      

引入jar包

将Hello.java打成jar包

$ cd libs
$ javac Hello.java
$ jar -cvf hello.jar Hello.class      

引入jar包执行

$ ls 
Demo.java
libs/
    hello.jar

$ javac -classpath ./libs/hello.jar  Demo.java
$ java -classpath .:./libs/hello.jar  Demo      

优化

$ javac -encoding UTF-8 -classpath ./libs -d classes Demo.java

# 参数说明
-encoding UTF-8    定源文件使用的字符编码
-classpath ./libs  指定查找用户类文件和注释处理程序的位置
-d classes         指定放置生成的类文件的位置,必须存在
Demo.java          source files

$ cd classes 
$ java Demo