javac编译所有java文件

由于项目结构不同,遇到了需要手动编译java文件的情况

javac指令

一般简单的java文件,在文件路径下输入cmd,回车,进到cmd窗口,输入javac HelloWorld.java即可在当前目录下生成一个HelloWorld.class文件
javac编译所有java文件_第1张图片
对于复杂一点的,有包结构的,有外部jar包依赖的,有中文(注释)的,使用如下指令
javac Xxx.java -d 输出目录 -encoding utf-8 -cp .;xxx

  • -d:指定生成类文件的位置。如果不指定-d默认在当前目录下生成.class文件,并且没有生成包文件夹
  • -encoding:指定编码格式
  • -cp:classpath的简写,指定搜索路径,以分隔。.表示当前路径,通常用于引入外部jar包

举个例子
javac test\P3\FriendshipGraphTest.java -d out -encoding utf-8 -cp src;lib\hamcrest-core-1.3.jar;lib\junit-4.13.jar

  • 意思是
    编译test\P3\FriendshipGraphTest.java文件,按照包结构输出class文件到当前目录下的out文件夹中(不存在则生成),从src目录下和lib目录下搜索依赖的class文件/jar包,jar包要写出来

编译所有java文件

但是对于复杂目录结构的项目,如何快速编译所有java文件呢?
可能需要自己写一个脚本了,但也并不繁琐,我使用了批处理文件(.bat)

写一个compile.bat文件,放到project根目录下,点击运行即可
这里假设是这样的目录结构

project
	src
	test
	lib
	compile.bat
  1. 新建一个compile.txt文件
for /r src/ %%i in (*.java) do javac %%i -d out -encoding utf-8 -cp src;lib\*
for /r test/ %%i in (*.java) do javac %%i -d out -encoding utf-8 -cp src;lib\*
  1. 解释:递归地找到src目录和test目录下所有的.java文件,循环do这样一件事:javac编译
  2. 修改后缀名,保存为compile.bat文件即可

你可能感兴趣的:(java,junit,开发语言)