首先建立java的目录结构,按照eclipse那种管理方式:
zsl@zsl-pc ~/Project/helloword $ tree
.
├── bin
│ ├── dosth
│ └── hello
├── lib
└── src
├── dosth
│ └── Say.java
└── hello
└── Hello.java
7 directories, 2 files
bin 存放编译的 class 文件
src 存放所有的 java 文件
lib 存放所有的第三方 jar 包
Say.java
package dosth;
public class Say{
public void say(){
System.out.println("helloword!");
}
}
Hello.java
package hello;
import dosth.Say;
public class Hello{
public static void main(String arg[]){
Say say = new Say();
say.say();
System.out.println("hello!!");
}
}
【javac编译】
zsl@zsl-pc ~/Project/helloword $ javac -cp lib:bin -Djava.ext.dirs=lib -d bin src/hello/*
src/hello/Hello.java:2: 错误: 程序包dosth不存在
import dosth.Say;
^
src/hello/Hello.java:5: 错误: 找不到符号
Say say = new Say();
^
符号: 类 Say
位置: 类 Hello
src/hello/Hello.java:5: 错误: 找不到符号
Say say = new Say();
^
符号: 类 Say
位置: 类 Hello
3 个错误
zsl@zsl-pc ~/Project/helloword $ javac -cp lib:bin -Djava.ext.dirs=lib -d bin src/dosth/*
zsl@zsl-pc ~/Project/helloword $ javac -cp lib:bin -Djava.ext.dirs=lib -d bin src/hello/*
第一次编译出错,是因为Say类还未加载。
使用的系统是 Ubuntu ,目录之间使用的是 :冒号隔开,如果是 windows ,替换为 ; 分号
【 -cp lib:bin 】编译过程中需要引入 class 所在的文件夹的路径
【-Djava.ext.dirs=lib】引入的第三方 jar 包存放的目录,如有引用第三方 jar 包编译时会通过此参数到相应的路径下查找
【-d bin src/hello/】指的是把【src/hello/】编译好放到【bin】下会自动匹配到对应目录下
编译后的目录结构:
.
├── bin
│ ├── dosth
│ │ └── Say.class
│ └── hello
│ └── Hello.class
├── lib
└── src
├── dosth
│ └── Say.java
└── hello
└── Hello.java
多了两个class
【java运行】
zsl@zsl-pc ~/Project/helloword $ java -cp bin -Djava.ext.dirs=lib hello.Hello
【 -cp lib:bin 】编译过程中需要引入 class 所在的文件夹的路径
【-Djava.ext.dirs=lib】引入的第三方 jar 包存放的目录,如有引用第三方 jar 包编译时会通过此参数到相应的路径下查找
【hello.Hello】要写全报名。
【注意】此处的许多地方和路径有关,自行调整