• java基础十[包、Jar存档文件和部署](阅读Head First Java记录)


    将Java的class文件生成为可执行的Java应用程序。Java应用程序有三种:完全在本机执行的Jar(例如本机的GUI可执行程序);完全在服务器端远程执行的(例如浏览器来进行存取);介于两者之间的组合(例如客户端在本地,与远程服务器交互)
     
    将class文件生成JAR
     
    指定编译时class类文件的存储目录
    打JAR(JavaArchiveFile)包仅需要编译后的class类文件,不需要源代码.java文件。可以通过-d指定编译结果输出的class存放目录
    例如:java -d ../classes MyApp.java
    也可以通过*.java匹配所有java文件进行编译
     
    创建一个可执行的JAR
    JAR包不需要把文件抽出来就可以用,程序可以保存在JAR中进行执行。主要JAR文件需要包含一个mainfest文件,带有了JAR的信息,文件需要指定哪个类还有main()方法。JAR文件不包含源代码,都是class文件
     
    1.所有class文件需要放到同一个目录下,并在该目录下创建mainfest.txt文件
    2.manifest.txt需要用下面一行来指定包含main()的类:
    Main-Class:MyApp
    MyApp为包含main()的class类,不要写后面的.class(该行内容后面需要加换行)
    3.执行jar工具来创建带有所有类以及mainifest的JAR文件
    进入class所在目录
    jar -cvmf manifest.txt outputname.jar *.class或jar -cvmf manifest.txt outputname.jar MyApp.class
    manifest.txt指定main()入口
    outputname.jar指定生成的jar的名字
    *.class指定要打包的class文件
     
    执行JAR
    首先确保JAR文件在classpath下,否则Java虚拟机找不到JAR。
    执行方式:java -jar xxx.jar
     
    用包管理class文件,并生成JAR
    用包可以防止类名冲突,完整的包中的类的名字是【包名.类名】,在类中、.java文件编译成class文件,jar执行的时候都要用包含包名的完整名字
     
    1.把类放进包中
    包名的命名一般是把域名反过来用,然后再后面再加其他的名字,例如com.wuba.zhuanzhuan.xxxx
    包下面的类,第一行需要加入包指令【package com.wuba.zhuanzhuan.xxx;】
    类需要放在包对应的目录结构下,包名的每个.的左右都代表一级目录,上面的包名例子,类文件需要放在com->wuba->zhuanzhuan>xxx的文件夹下
     
    2.编译包
    使用-d来进行编译,会按照包文件的目录创建一个编译的目录,将编译后的class文件放到对应层级的目录下
    例如:
    cd 包所在的目录(注意不是.java文件所在目录)
    javac -d ../classes com/wuba/zuanzhuan/xxx/*.java
    (如果class编译输出的路径还没有创建好,-d会根据源代码的目录创建目录)
     
    3.执行包
    必须指定包的完整名称进行执行,Java虚拟机能够找到包下的class文件
    java com.wuba.zhuanzhuan.xxx.MyApp
     
    4.以包创建可执行的JAR
    将包打包成JAR,包目录必须在JAR中,包的第一层目录必须是JAR的第一层目录
    4.1首先需要确定所有的class文件都在正确的包目录下
    4.2创建mainfest.txt描述哪个类带有main(),一定要使用包含报名的完整的类名称
    Main-Class:com.wuba.zhuanzhuan.xxx.MyApp
    然后把manifest.txt放到包所在目录下(classes)
    4.3执行jar工具创建包含目录结构和mainfest的JAR
    jar -cvmf manifest.txt MyApp.jar com
    只要指定包的最顶层目录即可,剩下的不用管
     
    JAR的操作
     
    生成JAR
    进入class所在文件,如果是包的话需要进入包所在目录
    创建manifest.txt文件指定main函数入口
     
    jar -cvmf manifest.txt outputname.jar *.class
     
    执行JAR
    首先确保JAR文件在classpath下,否则Java虚拟机找不到JAR。
    执行方式:java -jar xxx.jar
     
    JAR文件的构成
    查看JAR文件内容【jar -tf xxx.jar】(tf为table file)
    class文件目录与打包时的目录一致,在根目录下还有一个META-INF->MANIFEST.MF文件。这个文件是jar工具自动生成的,jar没有保存main入口的manifest.txt文件,而是将它的内容放到了MANIFEST.MF文件中
     
    解压JAR包
    解压JAR包【jar -xf xxx.jar】(xf为extract file)
     
    Java Web Start
    Java Web Start(JWS)部署方式可以使用户通过浏览器下载应用程序,在本地启动,并且可以检测更新
     
    Java Web Start的工作方式
     
    第一步:用户点击浏览器上的.jnlp文件下载链接
     
    第二步:Web服务器将.jnlp文件发送给客户端浏览器
     
    第三步:客户端浏览器启动Java Web Start,JWS的helper app读取.jnlp文件,然后通过.jnlp的内容向Web服务器请求JAR
     
    第四步:Web服务器发送.jar文件
     
    第五步:JWS取得.jar文件并调用指定的main()来启动应用程序
    然后用户可以在离线的情况下通过JWS来启动应用程序
     
    创建与部署Java Web Start的步骤
    第一步:将应用程序制作成可执行的JAR
    参考前面的内容
     
    第二步:编写.jnlp文件
    该文件指定了当前JAR的版本、.jar的下载地址、以及JAR的main()入口
    格式:
    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" codebase="指定相关文件起始目录" href=“相对codebase的路径">
        <information>
            <title>Dynamic Tree Demo</title>
            <vendor>Dynamic Team</vendor>
            <icon href="sometree-icon.jpg"/>
            <offline-allowed/>
        </information>
        <resources>
            <!-- Application Resources -->
            <j2se version="1.3+">
            <jar href=“可执行JAR的名称(xx.jar)" main="true" />
        </resources>
        <application-desc  main-class=“和mintiest一样,指定哪个类带有main()”/>
    </jnlp>
     
    jnlp是一个xml文件,<information>信息是给helper app用的,显示java应用程序的信息
    j2se version指定了java需要的最低版本,如果没有安装会自动安装java
     
    详细的jnlp文件格式可以参考下面链接:
     
    第三步:把.jnlp和JAR文件放到Web服务器
     
    第四步:对Web服务器设置新的mime类型
    application/x-java-jnlp-file
     
    第五步:设定网页链接到.jnlp文件
    这步是为了从浏览器上下载.jnlp文件的
     
  • 相关阅读:
    命令行net time同步时间(内网)
    清理树莓派系统垃圾
    树莓派常用功能的安装和使用
    树莓派的媒体播放软件omxplayer
    树莓派安装FTP服务器
    Raspbian 中国软件源
    树莓派挂载和卸载U盘或移动硬盘
    树莓派上搭建NAS
    Aria2+yaaw+Chrome插件BaiduExporter实现百度网盘下载
    树莓派做下载机+Web服务器(Aria2下载+yaaw做UI+nginx)
  • 原文地址:https://www.cnblogs.com/meitian/p/5828073.html
Copyright © 2020-2023  润新知