Javac 简单用法
写过Java的人大多会用各种IDE(比如eclipse或者netbeans什么的),方便快捷.但是有时候,我们无法使用IDE,只能用原始的javac命令.
那么javac命令应该如何使用呢.
首先,最简单的:
javac Test.java
只要Test.java没错,那么在当前目录下我们会得到名为Test.class的字节码文件.
如果我们一次编译的源文件不多,那么可以直接在javac的参数中制定源文件:
javac A.java B.java C.java
这条指令的效果于逐个源文件编译的效果相同.
但是如果有很多个源文件该如何编译呢? 一不小心打错一个字符就得会过头在长长的命令中差错.冗长的指令让人头痛.
这时我么可以在一个文本文件中列出需要编译的源文件,一行一个,如:
A.java
B.java
C.java
D.java
...
然后执行一下指令:
javac @filename
改指令会读取filename文件的内容,然后查找对应的源文件进行编译.
更复杂的情况,如果我们在源文件中import了其他jar包呢?
在javac指令中,我们可以用-classpath(或-cp)参数引入我们依赖的jar包:
javac -classpath /home/lib/Depende.jar Test.java
如果想要引入某个文件夹下所有的jar包的话,可以使用如下指令:
javac -classpath /home/lib/* Test.java
注意:星号(*)表示该文件夹下所有以.jar或者.JAR结尾的文件,切记不要写成*.jar,这种形式是无法导入的.
那么如果我的源代码是很有组织的位于不同的package呢?如果直接javac的话会在源文件相同的目录下生成.class文件,这样编译之后的文件与源文件处于同一目录下会很难管理.
我们可以使用-d参数指定一个文件夹存放编译生成的字节码文件,而且字节码文件的目录结构与源代码结构是相同的.
javac @sourcelist-d targetdir
如果综合上述情况考虑,我们的源文件很多,放在不同的包下面,然后还依赖额外的jar包,那么:
javac -classpath /home/lib/* @sourcelist -d target
编译过程中可能产生很多警告信息,我们可以用-nowarn参数来禁止警告信息
javac -classpath /home/lib/* @sourcelist -d target