130 likes | 312 Views
《Java 游戏开发 》 情境 8 游戏的集成与发布. 08 游戏 3-2. 已经完成的进度 完成了 7 个情境的学习 有一个完整的可以执行的电梯游戏 新的挑战 ? :每次都要在 DOS 下输入一系列命令才 可以玩游戏吗 ? :游戏产生的这么多个文件,用户到底 执行哪个好呢 解决方法:集成打包为一个可执行文件. 学习任务. 核心技术: DOS 下生成 JAR 文件 JAVA 中 jar 文件的编写和应用 内容清单 manifest.fm 功能扩展: DOS 下生成贪吃蛇游戏可执行文件 应用升级:使用 ECLIPSE 开发环境打包发布电梯游戏
E N D
《Java游戏开发》情境8 游戏的集成与发布 08游戏3-2
已经完成的进度 • 完成了7个情境的学习 • 有一个完整的可以执行的电梯游戏 • 新的挑战 ?:每次都要在DOS下输入一系列命令才 可以玩游戏吗 ?:游戏产生的这么多个文件,用户到底 执行哪个好呢 • 解决方法:集成打包为一个可执行文件 学习任务
核心技术:DOS下生成JAR文件 • JAVA中jar文件的编写和应用 • 内容清单 manifest.fm • 功能扩展:DOS下生成贪吃蛇游戏可执行文件 • 应用升级:使用ECLIPSE开发环境打包发布电梯游戏 • 导入电梯游戏项目 • 打包发布成可执行文件 学习内容
DOS下生成JAR文件 • JAR:(Java Archive File)顾名思意,它是 Java 的一种文档格式。几乎可以说JAR 文件就是 ZIP 文件,它们的区别是在 JAR 文件的内容中,包含了一个META-INF/MANIFEST.MF 文件,这个文件可以是在生成 JAR 文件的时候自动创建的;也可以是自己书写的 核心技术
例如有如下程序:HelloWorld.class • 可以通过如下方法来进行打包: • jar cvf HelloWorld.jar HelloWorld.class • 其中cvf是参数,如下文jar的用法所示。 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } 核心技术
用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ... 选项: -c 创建新的存档 -t 列出存档内容的列表 -x 展开存档中的命名的(或所有的〕文件 -u 更新已存在的存档 -v 生成详细输出到标准输出上 -f 指定存档文件名 -m 包含来自标明文件的标明信息 -0 只存储方式;未用ZIP压缩格式 -M 不产生所有项的清单(manifest〕文件 -i 为指定的jar文件产生索引信息 -C 改变到指定的目录,并且包含下列文件: • 如果一个文件名是一个目录,它将被递归处理。 核心技术
示例1:将HelloWorld打包成JAR文件 执行演示 核心技术
清单(manifest〕文件名和存档文件名都需要被指定,按'm' 和 'f'标志指定的相同顺序。 • 如果使用winrar打开HelloWorld.jar看看,可以发现里面除了HelloWorld.class之外,还有META-INF/MANIFEST.MF文件。 示例2:为HelloWorld修改清单文件 核心技术
我们可以修改manifest.mf文件,在里面添加Main-Class用于指明主方法,这样,我们可以通过java -jar {jarname.jar}来直接运行程序了。 • 对上例中manifest.mf文件加入Main-Class: HelloWorld 核心技术
示例3:运行HelloWorld.jar 现在我们就可以在DOS下通过输入java –jar HelloWorld.jar来运行程序了。 核心技术
扩展:我们要对贪吃蛇游戏进行打包了: • 这是一个由两个.java代码文件组成的程序 • 我们已经在之前的情境练习中成功对其编译并得到了Node.class、SnakeModel.class和GreadSnake.class三个类文件 • 步骤: 1、编辑清单文件 2、对文件进行打包 功能扩展
其实,我们可以自己编写manifest.mf文件,在里面添加Main-Class或Class-Path,这样,我们可以对一个大的程序进行打包,并且可以通过java -jar {jarname.jar}来直接运行程序了。 • 以贪吃蛇游戏为例: • 此游戏的主方法处于GreadSnake.class中故编辑如下清单文件: 功能扩展
示例4:打包产生snake.jar可执行文件 现在我们就可以在DOS下通过输入打包命了。 在DOS中输入:jar cfm snake.jar manifest.mf GreadSnake.class SnakeModel.class Node.class;此操作将多个class文件存档到一个名为 ‘snake.jar' 的存档文件中 请看执行结果 功能扩展