先给出参考的两个链接,然后再总结:
内容:使用javac 指定编译多个目录下java文件
概要:目录结构——project;
project/src/com/package1/a.java;
project/src/com/package2/b.java;
project/class/ //作为类的输出目录
project/sourceList.txt //sourceList.txt位源文件列表文件,存放要编译的类的相对路径,如:src/com/package1/a.java
// javac命令只会一行一行地读取其中的记录,作为一个单位进行类编译。
project/lib/jxl.jar //外用库
sourceList.txt内容—— src/com/package1/a.java //(或project\src\package1\a.java;)
src/com/package2/b.java
在project 目录下执行——javac -classpath lib/jxl.jar -sourcepath src @sourcelist.txt -d class
内容:如何用javac 和java 编译运行整个Java工程
链接:http://blog.csdn.net/huagong_adu/article/details/6929817
概要:本文教你怎么用javac和java命令,以及如何利用脚本(shell或bat)方便处理,并用简单的实例展示这些用法。(主要是linux系统下的操作)
(指错:该文章说“windows下文件路径分隔符用 \ ,文件列表分隔符用分号 ;” 而我自己测试后则是:windows 7 下文件路径分隔符用 [space 空格],文件列表分隔符用 [回车])
javac使用总结:
使用上面文件目录结构来说明
(其中package1 的a.java 有导入packge2 的b.java 所生成的类 b.class
a.java 内容—— package com.package1;
import com.package2.b;
......
b.java 内容—— package com.package2;
......
)
生成工程文件的三个方法如下:
1、cd 进入工程目录,依次执行
javac -sourcepath src src/com/package2/*.java -d class
javac -sourcepath src src/com/package1/*.java -d class -class -classpath class
这个方法比较繁琐,如果有较多的包,得执行多个语句,而且还会存在错误:找不到软件包。
只有先把没有被引用导入的类先编译后,再编译引用它的那个类才能够顺利编译(也就是说如果以上两句如果顺序调换一下,第一行就执行不了了)
同时还要注意:有导入别的包的那个类,在编译时要给出具体的classpath ,在这里 编译后的类放在 class 目录下,所以用-classpath class
以下两个方法无需考虑顺序,只要把涉及的文件都写及到就可以
2、cd 进入工程目录,javac -sourcepath src @sourcelist.txt -d class
(该方法必须将所有文件的具体相对路径一个一个写入sourcelist.txt(上面有提到这个列表的文件),不知道可不可以用通配符*)
1、cd 进入工程目录,javac -sourcepath src src/com/package1/*.java src/com/package2/*.java -d class
(该方法直接指定所有源文件路径,以空格隔开(在Windows 7 下已测,可行),可以使用通配符*)