开发完以后会有很多的类, 拿这些类怎么办呢?
- 本机
1. 类文件与源代码分离在不同目录 javac –d ../classes *.java
- 把类包进 JAR
1. 确定所有类文件所在目录, 例如 classes
2. 创建 manifest.txt 来描述哪个类带有 main()方法, 该文件带有下面这一行:
Main-Class: MyApp // 在此之后要敲回车换行, 这个文件也要放在classes目录下
3. 执行jar工具来创建带有所有类以及manifest的 JAR文件
jar –cvmf manifest.txt app1.jar *.class ( 跟 tar 很像 )
或 jar –cvmf manifest.txt app1.jar MyApp.class
大部分都是以可执行的 JAR 部署的
- 执行 JAR
java 虚拟机能够从JAR中载入类, 并调用该类的main()方法.事实上整个应用程序都可以包在JAR中. 一旦main方法开始执行, java虚拟机就不会在乎类重哪里来.
java –jar app1.jar ( 就可以执行了 )
java 虚拟机会检查 JAR 的 manifest 寻找入口, 如果没有就会发生异常
有的 JAR 可以直接双击开始执行, 例如 windows 和 Mac OS
- 把类包进包中(重复利用类, 类似目前很多框架)
注意, 这个包不是JAR, 而是java中的package
担心类重名,比如你写了个API给别人用,在函数库里,有重复的名字就废了
我们要把前几页战士的组织结构做个修改,让类包进包中,然后再吧整个包给JAR起来
类得全名, 例如 java.util.ArrayList ( 要保证包名称不重复 )
反向使用 domain的包名称,例如 com.headfirstjava.projects.Chart ( 目录要配合 )
package com.headfirstjava; // 必须是程序第一语句
-- 编译与执行包
1. –d 现象编译 javac –d ../classes com/headfirstjava/packageexercise.java
-d 后边的是编译后 class 放置位置, com/head… 等等是源文件放置位置
注意:以上是在 source 目录下编译的,所以, ../才会起作用,在这个目录下有路径/com/headfirstjava
2. 执行包
cd MyProject/classes
java com.headfirstjava.PackageExercise ( 跟执行java程序一样, 以前不也是先javac 源代码编译, 再java class文件)
- 创建带包的JAR
- java web start
运用 java web start(JWS) 你的程序可以在浏览器上执行首次启动(从web来start)
所以你需要制作.jnlp文件, 方法如下: