javac [-d] [-o] [-verbose] [-classpath][-sourcepath]
-d: 指定生成的.class文件存放目录,一般省略则默认放在java源文件同一目录下;
-o: 这个选项告诉javac优化内联的static,final以及privite成员函数所产生的码;
-verbose:此选项告知java显示出有关被编译的源文件和任何被调用类库的信息;
如-verbose:class能看到各种加载的信息,-verbose:gc 是garbagecollection 的信息。
-classpath:设定编译时要用到的类路径,可以是目录,jar文件,zip文件(里面都是class文件);
值得注意的是,此classpath可以简写为cp,当用到多个类时各类路径之间用 : 相隔。
此项也可以省略,省略则默认使用环境变量$CLASSPATH路径。
classpath中的内容是会覆盖掉环境变量CLASSPATH里面的设定。
所以一般classpath的设定都是:当前目录加环境变量CLASSPATH设置目录,如
javac -cp .:$CLASSPATH abc.java
-sourcepath:设定要编译的java文件路径,可以是目录,jar文件,zip文件(里面都是java文件);
注意,若编译的是jar包中的主类文件abc.java时,一般编译整个包javac edu.test.jar或者包文件夹javac ./edu/test。
一般当有多个java文件需要编译时,可以逐一列出,也可以将文件名列在一个文件中,名称间用空格或者回车行来进行分隔,然后在命令行中使用该列表名,名字前冠以@字符,如:
javac @usr/test/sourcefile.list 编译目录usr/test 下的sourcefile.list中的java文件
1)一般对于只有一个出口主函数main,其他java文件是以内联类的形式被主函数调用的多个java文件组成的工程来说,编译时只需要对出口主函数main所在java文件编译即可,工程中的其他java文件会自动关联编译;
2)对于程序中调用到了第三方类或者package的情况,则一般先需要在程序文件中加入import第三方类或者jar包;
如 import edu.test.abc 引用jar包edu.test下的abc.java,为稳妥,一般都引用整个包内文件import edu.test.*。编译时需要将jar包路径或者文件夹根目录,如edu的路径加入到classpath中。一般常把jar包或者根文件夹拷贝到当前目录下,指定classpath为.,编译器自动会从当前目录开始寻找。
jar {ctxu}[vfm0M][jar-文件] [manifest-文件] [-C 目录] 文件名
其中 {ctxu} 是 jar命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示:
-c:创建新的 JAR 文件包;
-t:列出 JAR 文件包的内容列表;
-x:展开 JAR文件包的指定文件或者所有文件;
-u:更新已存在的 JAR 文件包(添加文件到 JAR 文件包中);
特别注意,在参数的下达中, c/x/t/u仅能存在一个,不可同时存在!因为不可能同时压缩与解压缩。
-z:是否同时具有 gzip的属性?亦即是否需要用 gzip 压缩;
-j:是否同时具有 bzip2的属性?亦即是否需要用 bzip2 压缩;
-v:压缩的过程中显示文件!这个常用,但不建议用在背景执行过程;
-f:指定 JAR文件名,通常这个参数是必须的;
请留意,在 f之后要立即接档名喔!不要再加参数!
比如:
『 tar -zcvfP tfile sfile』就是错误的写法,
『 tar -zcvPf tfile sfile』才是正确的写法。
-p:使用原文件的原来属性(属性不会依据使用者而变;
-P :可以使用绝对路径来压缩;
-N:比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件;
-excludeFILE:在压缩的过程中,不要将 FILE 打包;
-m:指定需要包含的 MANIFEST清单文件;
-0:只存储,不压缩,这样产生的 JAR文件包会比不用该参数产生的体积大,但速度更快;
-M:不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m 参数;
[jar-文件]:即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数;
[manifest-文件]:即MANIFEST 清单文件,它是 -m 参数的附属参数
[-C 目录]表示转到指定目录下去执行这个 jar 命令的操作,它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的命令,它只能在创建和更新 JAR文件包的时候可用。
文件名:指定一个文件/目录列表,这些文件/目录就是要添加到 JAR 文件包中的文件/目录。如果指定了目录,那么jar命令打包的时候会自动把该目录中的所有文件和子目录打入包中。
2.2 实例:
jar -cvf IDMatch_V1.jar *.class
1、java -jar xxxxx.jar
当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出。
2、java -jar xxxxx.jar &
当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
3、nohup Java -jar xxxxxx.jar &
不挂断运行命令,当账户退出或终端关闭时,程序仍然运行。