17.发布程序

包,jar存档文件和部署

该是放手的时候了

部署应用程序

  1. 本机
  2. 两者之间的组合
  3. 远程

将源代码与类文件分离

-d

%cd MyProject/source
%javac -d ../classes *.java(或者单个MyApp.java)

把程序包进JAR

创建可执行的JAR
  1. 确定所有的类文件都在classes目录下
  2. 创建mainfest.txt来描述哪个类带有main方法
    1. Main-Class: MyApp
  3. 执行jar工具来创建带有所有类以及manifest的jar文件
    1. cd MiniProject/classes
    2. jar -cvmf manifest.txt app1.jar *.class 或 jar -cvmf manifest.txt app1.jar MyApp.class
  4. 执行jar
    1. java -jar app1.jar

把类包进包中

用包防止类名冲突

防止包名冲突

  1. 反向使用domain的包名称

把类包进包中

  1. 选择包名称
  2. 在类中加入包指令
  3. 设定相对应的目录结构

编译与执行包

其实-d选项真的很酷

-d 选项会要求编译器将编译结果根据包的结构来建立目录并输出

以包创建可执行jar

那manifest文件会跑到哪里

要点

  1. 将项目组织一下以让源代码和类文件分开在不同的目录下
  2. 标准的组织化结构是创建出项目目录,然后阿紫其下建立source和classes目录
  3. 将类以包来组织,并在前面加上域名称以防止命名冲突
  4. 在程序源文件最前面加上包指令可以吧类包进包中
    1. package com.domain
  5. 类必须呆在完全相对应于包结构的目录中才能包进包中.以com.domain.Foo来说Foo这个类必须放在com目录下domain这个目录中
  6. 要让编译过的类可以放在争取的包目录结构中,使用 -d 编译标识:
    1. cd source
    2. javac -d ../class com/domain/Foo.java
  7. 切换到classes目录然后指定完整的类名称来执行程序
    1. java com.domain.foo
  8. 你可以把类包进Jar包中,它的格式是根据pkzip制作的
  9. 将描述哪个类带有main的manifest包进JAR中可以制作出可执行的JAR文件.manifest文件是个带有像下面这样设定的文本文件,记得最后要换行才能保证正确
    1. Main-Class: com.domain.foo
  10. 用下面的命令来创建JAR文件:
    1. jar -cvfm manifest.txt Myjar.jar com
  11. JAR中的结构必须完全的符合包的目录结构
  12. 一下面的命令格式来执行JAR
    1. java -jar Myjar.jar

Java Web Start的工作方式

  1. 客户端点击某个网页上jws应用程序的连接
  2. web服务器收到请求发出.jmlp文件给客户端的浏览器
  3. 浏览器启动jws,jws的helper app 读取.jnlp然后向服务器请求Myapp.jar
  4. web服务器发送.jar文件
  5. jws取得jar并调用指定的main()来启动应用程序

jnlp 文件

创建jws 的步骤

  1. 将程序制作可执行的jar
  2. 编写.jnlp
  3. 吧.jnlp与jar文件放到web服务器
  4. 对web服务器设定新的mime类型
  5. 设定网页连接到.jnlp