good good study, day day up!

Javac 简单用法

2012-03-02

写过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 -nowarn -classpath /home/lib/* @sourcelist -d target

 


知识共享许可协议本作品采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名(chen)并包含原文链接

作者:chending | Categories:未分类 | Tags:

发表评论

电子邮件地址不会被公开。 必填项已用*标注