1、实验目的与要求
(1) 掌握Java应用程序的打包操作;
(2) 了解应用程序存储配置信息的两种方法;
(3) 掌握基于JNLP协议的java Web Start应用程序的发布方法;
(5) 掌握Java GUI 编程技术。
一、理论知识
JAR 文件
1、JAR文件是压缩的,它使用 ZIP 压缩格式。
2、Java程序的打包:程序编译完成后,程序员 将.class文件压缩打包为.jar文件后,GUI界面 程序就可以直接双击图标运行。
3、⚫jar命令格式: jar {ctxui} [vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files…
⚫-c 创建一个新的或者空的存档文件并加入文件。
-m 将一个清单文件(manifest)添加到JAR文件中。
-u 更新已存在的JAR文件(c和u不能同时出现)
-x 解压存档中的命名的(或所有的〕文件
⚫(1) 创建JAR文件:jar cf jar-file(文件名) input-file(s)
(2) 查看JAR文件:jar tf jar-file (查看t) t---want to view the Table of contents of the JAR file.
(*代表通配符,任意长度的字符。 ?仅代表一个位置是任意的)
(3) 提取JAR文件:jar xf jar-file [archived-file(s)] x---want to extract files from the JAR archive
(4) 更新JAR文件:jar uf jar-file input-file(s) u---want to update an existing JAR file.
(5) 索引JAR文件:jar i jar-file i---index an existing JAR file.
4、清单文件:每个JAR文件中包含一个用于描述归档特征的清单文 件(manifest)。清单文件被命名为MANIFEST.MF,它位于JAR文件的一个特殊的META-INF子目录中。
(2)清单文件的节与节之间用空行分开,最后一行必须以 换行符结束。否则,清单文件将无法被正确地读取。
例:– 创建一个包含清单的JAR文件,应该运行: jar cfm MyArchive.jar manifest.mf com/*.class
(3)运行JAR文件:用户可以通过下面的命令来启动应用程序: java –jar MyProgram.jar
窗口操作系统,可通过双击JAR文件图标来启动应用程序。
5、资源:Java中,应用程序使用的类通常需要一些相关的数据文件,这些文件称为资源(Resource)。
(–图像和声音文件。 –带有消息字符串和按钮标签的文本文件。 二进制数据文件,如:描述地图布局的文件。)
(1)利用资源机制对于非类文件也可以进行同样操作 ,具体步骤如下:
– 获得资源的Class对象。
– 如果资源是一个图像或声音文件,那么就需要调用 getresource(filename)获得资源的URL位置,然后利 用getImage或getAudioClip方法进行读取。 – 如果资源是文本或二进制文件,那么就可以使用 getResouceAsStream方法读取文件中的数据。
(2)资源文件可以与类文件放在同一个目录中,也可以将资源文件放在其它子目录中。具体有以下两 种方式:
–相对资源名:如data/text/about.txt 它会被解释为相对于加载这个资源的类所在 的包。
–绝对资源名:如/corejava/title.txt
(3)编译、创建JAR文件和执行这个程序的命令如下: – javac ResourceTest.java
– jar cvfm ResourceTest.jar ResourceTest.mf *.class *.gif *.txt
– java –jar ResourceTest.jar
⚫
◼ 应用程序首选项存储
◼ Java Web Start
⚫ Java Web Start是一个用Java编写的应用程序,它是Sun 公司推出的一项在Internet上发布应用程序的技术;
⚫ 通过Java Web Start可以使一个应用程序很容易地通过 web部署在各个平台上,包括Windows,Linux,Solaris等。
⚫ Java Web Start的工作过程是基于Java Network Launch Protocol(JNLP) 协议的 。 一个后缀为 JNLP的文件包含了应用程序的说明以及如何启动 这个应用程序的所有信息,Java Web Start技术 部署应用程序的关键就在于JNLP文件的编写以及 发布。
2、实验内容和步骤
实验1: 导入第13章示例程序,测试程序并进行代码注释。
测试程序1
l 在elipse IDE中调试运行教材585页程序13-1,结合程序运行结果理解程序;
l 将所生成的JAR文件移到另外一个不同的目录中,再运行该归档文件,以便确认程序是从JAR文件中,而不是从当前目录中读取的资源。
l 掌握创建JAR文件的方法;
package resource; import java.awt.*; import java.io.*; import java.net.*; import java.util.*; import javax.swing.*; /** * @version 1.41 2015-06-12 * @author Cay Horstmann */ public class ResourceTest { public static void main(String[] args) { EventQueue.invokeLater(() -> { JFrame frame = new ResourceTestFrame(); frame.setTitle("ResourceTest");//设置标题 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭界面的操作 frame.setVisible(true);//使结果为可见的 }); } } /** * A frame that loads image and text resources. */ class ResourceTestFrame extends JFrame { //定义像素长和宽 private static final int DEFAULT_WIDTH = 300; private static final int DEFAULT_HEIGHT = 300; public ResourceTestFrame()//定义ResourceTestFrame类 {//利用about.gif图像文件制作图标 setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); URL aboutURL = getClass().getResource("about.gif"); Image img = new ImageIcon(aboutURL).getImage(); //在找到ResourceTest类的地方查找about.gif图像文件 setIconImage(img); JTextArea textArea = new JTextArea(); //读取about.txt文件 InputStream stream = getClass().getResourceAsStream("about.txt"); try (Scanner in = new Scanner(stream, "UTF-8")) { while (in.hasNext()) textArea.append(in.nextLine() + "\n"); }//捕获异常 add(textArea); } }