首页 > 编程语言 >Head First Java 读书笔记 17章

Head First Java 读书笔记 17章

时间:2022-11-22 23:47:40浏览次数:40  
标签:文件 Head Java 读书笔记 jar app JAR Start

第17章:包、jar存档文件和部署(发布程序)

Java程序,是由一组类所组成的,这就是开发过程的输出。本章将讨论如何组织、包装和部署Java程序。

如何组织Java代码文件?

组织代码文件的方案有很多。建议一种几乎已经成为了标准的组织方案——在 source目录下放置 .java 源文件;在 classes 目录下放置 .class 编译结果。使用 -d 选项,可以指定编译结果的存储目录。

// -d 用于指定编译结果的存储目录

javac -d ../classes MyApp.java

mainifest文件 与 JAR包

JAR即 Java ARchive。这种文件是个 pkzip 格式的文件,它能够让你把一组类文件包装起来,所以交付时只需要一个 JAR文件即可。它类似 Linux上的 tar命令。可执行的 JAR 代表用户不需要把文件抽出来就能运行,这个秘密就在于 mainifest文件,它携带着 JAR包的若干信息,并且能告诉Java虚拟机哪个类中含有 main() 方法。

如何创建 JAR 包?

cd myproject/classes
jar -cvmf mainifest.txt app.jar *.class
或者
jar -cvmf mainifest.txt app.jar MyApp.class

如何执行 JAR包?

cd myproject/classes
java -jar app.jar

大部分的Java应用,都是以可执行的JAR包来部署的。Java虚拟机能够从JAR包中载入类,并调用该类中的 main() 方法。事实上,整个应用程序都可以包在 JAR包中。一旦 main() 方法开始执行,Java虚拟机就不会在乎类是从哪里来的,只要能够找到就行。其中一个来源就是 classpath 指定位置的所有 JAR文件。

Java虚拟机必须要能找到JAR,所以它必须在 classpath 下。让 JAR曝光的最好方式就是把 JAR放置在工作目录下。Java虚拟机会检查 JAR包中的 manifest文件以寻找入口,如果没有找到就会发生运行期间异常。
根据操作系统的设置,双击 JAR文件也可以直接运行 JAR文件。

如何防止类名、包名的命名冲突?

用包防止类名的命名冲突。

用 domain 名称防止包名的命名冲突。

./source/cn/geekxia/*.java

./classes/cn/geekxia/*.class

如何列举 JAR包中的文件?

jar  -tf  app.jar

如何解压 .jar包?

jar  -xf  app.jar

关于 Java Web Start 技术的一些知识点

Java Web Start技术让你能够从网站来部署独立的客户端程序。Java Web Start有个必须要安装在客户端的helper app。Java Web Start程序由两个部分组成:可执行的JAR包和.jnlp文件。 .jnlp文件是用来描述Java Web Start应用程序的XML文件。它有tag以指定JAR的名称和位置,以及带有 main()的类名称。当浏览器从服务器上取得 .jnlp文件时,浏览器就会启动 Java Web Start的 helper app。Java Web Start会读取 .jnlp文件来判断要从服务器上下载的可执行JAR包。取得JAR包之后,它就会调用 .jnlp指定的 main()。

 

标签:文件,Head,Java,读书笔记,jar,app,JAR,Start
From: https://www.cnblogs.com/LvJinshuai/p/16916900.html

相关文章

  • Head First Java 读书笔记 16章
    有哪些常用的集合?ArrayListTreeSet以有序状态保存并可防止数据重复HashMap以键值对的形式保存数据LinkedList针对经常插入或删除中间元素所设计的高效率集合HashSe......
  • 随机打乱数组--java实现
    参考链接听说过java.utils.Random随机数是伪随机,但是Math库还没学,所以下面代码中还是用的Randompublicstaticint[]shuffle(int[]arr){Randomr=newRandom(......
  • Java 用Lambda实现一个通用的制造者工具
    在我们日常开发中,虽然是用了lombok在实体类中已经帮我们省了get、set方法,但是在公司的项目中,还是经常会出现new一个对象然后一个个的给它set值的情况,太丑了,如下图List<St......
  • javaSE基础-数组
    数组数组的简述1、数组:是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行同一管理2、数组的相关概念:数组名元素角标、下标、......
  • JAVA- 动漫美女拼图(给按钮添加事件)
    代码一packagecom.itheima_05;publicclassApp{publicstaticvoidmain(String[]args){PictureFramepf=newPictureFrame();}}代码二pa......
  • JAVA- 动漫美女拼图(记录0号图片位置)
    代码一packagecom.itheima_02;publicclassApp{publicstaticvoidmain(String[]args){PictureFramepf=newPictureFrame();}}代码二pa......
  • Java多线程 线程池的生命周期及运行状态
    (目录)一、说明线程池的生命周期线程池的状态runState和工作线程数量workerCount共同保存在AtomicInteger类型的控制变量ctl中ctl高三位保存运行状态(2^3^=8>5),低2......
  • java爬虫
    创建Maven工程加入依赖<!--https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient--><dependency><groupId>org.apache.httpcomponents</gr......
  • 【JAVA笔记】jJAVA入门基础02
     一.符号及类型1.1添加注释comment注释:就是对代码的解释和说明。其目的是让人们能够更加轻松地了解代码。为代码添加注释,是十分必须要的,它不影响程序的编译和运行......
  • Java基础题
    Java基础题1.Java面向对象有哪些特征继承、封装、多态三大特征相互相乘封装:封装内部的一些实现机制,就跟方法封装一些实现的机制一样继承:就是从已有的类派生出新的类,新......