zoukankan      html  css  js  c++  java
  • JDK中的 javac / java / jar 命令 迎客

    测试项目test

    结构:

    Test.java:

    package cn.pxl;
    import en.B;
    public class Test{
        public static void main(String args[]){
            System.out.println("this is cn.pxl.Test class");
            A.m1();    
            B.m1();
            A.m2();
        }
    }
    

    A.java:

    package cn.pxl;
    public class A{
        public static void m1(){
            System.out.println("this is cn.pxl.A method m1");    
        }   
        
        /**
         * @deprecated will be deleted...
         */
        public static void m2(){
            System.out.println("this is cn.pxl.A method 2");
        }
    }
    

    B.java:

    package en;
    public class B{
        public static void m1(){
            System.out.println("this is B.m1");   
        }    
    }
    

    javac 命令

    javac命令用于编译Java源文件,语法如下:
    javac [ options ] [ sourcefiles ]

    options的主要选项:

    -sourcepath <路径>  :指定Java源文件的路径。

    -d <路径>       :指定编译生成的类文件存放目录,该目录必须存在。如果没有指定目录,生成类文件和源文件放在同一目录下。

    -classpath <路径>     :设定要搜索类的路径。可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有在CLASSPATH里面的设定

    -deprecation                :输出源程序中使用了不鼓励使用(Deprecated)的API的具体位置。

    -verbose                     :输出编译器运行中的详细工作信息。

    打开cmd命令窗口,切换目录到test目录下。

    编译test到classes目录下:

    javac -sourcepath ./src -d ./classes ./src/cn/pxl/*.java

    编译时输出使用了Deprecated的API的位置:

    javac -sourcepath ./src -d ./classes -deprecation ./src/cn/pxl/*.java

    输出详细编译信息:

    javac -sourcepath ./src -d ./classes -verbose ./src/cn/pxl/*.java

    说明:

    --javac在编译源文件时,会先对编译源文件中关联的其它文件。

    --可以同时指定多个要编译的源文件,用空格分隔。

    --如果编译文件已存,且源文件没有更新,则不会重新编译该源文件。

    java命令

    java命令用于运行Java程序,它会启动Java虚拟机,Java虚拟机加载相关的类,然后调用主程序main()方法。

    -classpath <路径>    :设定要搜索的类的路径,可以是目录,jar文件,zip文件(里面都是class文件),会覆盖掉所有的CLASSPATH的设定。多个用‘;’分隔。

    -verbose                 :输出运行时详细工作信息。

    -jar                        :指定可执行的jar包。

    在/test目录下运行编译后的Test程序:

    java -classpath ./classes Test

    jar命令

    jar命令能够把Java应用打包成一个文件,这个文件的扩展名为.jar,称为JAR文件。JAR 文件非常类似 ZIP 文件。准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。jar命令可以打包任意文件,但通常情况下我们只把编译后的.class文件打包成JAR包。

    jar语法:

    jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...
    其中 {ctxu} 是 jar 命令的子命令,每次 jar 命令只能包含 ctxu 中的一个,它们分别表示: 

    -c 创建新的 JAR 文件包 

    -t 列出 JAR 文件包的内容列表 

    -x 展开 JAR 文件包的指定文件或者所有文件 

    -u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中) 

    [vfm0M] 中的选项可以任选,也可以不选,它们是 jar 命令的选项参数 

    -v 生成详细报告并打印到标准输出 

    -f 指定 JAR 文件名,通常这个参数是必须的 

    -m 指定需要包含的 MANIFEST 清单文件 

    -0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快 

    -M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数 

    [jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数 

    [manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数 

    [-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。   

    把test的编译文件打包成jar包(注意,一定要在test/classes目录下执行命令):

    jar -cvf ../deploy/test.jar *.*

    把包成功后就可以用下面java命令运行Test程序:

    java -classpath ../deploy/test.jar Test

    (先删除classpath目录下的所有文件,)把test.jar包解压到当前目录(classpath)下:

    java -xvf ../deploy/test.jar

    解压后,在当前目录下多了 META-INF/MANIFEST.MF 目录和文件,它用于描述JAR文件的信息。这就是jar和zip的区别所在。

    创建可执行的jar包

    用上诉javac命令,把Test源文件编译到classes目录下。在classes目录下创建一个Manifest.txt文件,内容如下:

    Main-Class: cn.pxl.Test

    (注意:要回车)

    以上内容指定JAR包的主程序是cn.pxl.Test类。在classes目录下运行如下jar命令:

    jar -cvfm ../deploy/test.jar Manifest.txt *.*

    这样创建了一个可执行的JAR包,用以下命令运行这个JAR包:

    java -jar ../deploy/test.jar
  • 相关阅读:
    sql over(partition by) 开窗函数的使用
    利用curl函数处理GET数据获取微信公众号的access_token
    2018.4.12
    字段和属性
    C#实现回车键登录
    判断DataTable里面数据是否有重复数据
    一个强大的人民币大写转换的正则表达式
    C#将image中的显示的图片转换成二进制
    遍历Dev LayoutControl中的所有控件信息
    遍历窗体中所有控件的信息
  • 原文地址:https://www.cnblogs.com/pengxl/p/1902082.html
Copyright © 2011-2022 走看看