JavaSE程序的打包

一、JAR文件

一个jar文件既可以包含类文件,也可以包含诸如图像和声音这些其他类型的文件,jar文件是压缩的,zip的压缩格式。

  • 打包命令行jar cvf JARFileName File1 File2
    c 创建一个新的或者空的存档文件并加入文件。如果指定的文件名是目录,jar程序将会对他们进行递归处理。
    v 生成详细的输出结果
    f 将JAR文件名指定为第二个命令行参数。如果没有这个参数,jar命令会将结果写到标准输出上(在创建JAR文件时)或者从标准输入中读取它(在解压或者列出JAR文件内容时)
    JavaSE程序的打包_第1张图片
    JavaSE程序的打包_第2张图片
  • 清单文件:描述归档特征的文件manifest,MANIFEST.MF
    JavaSE程序的打包_第3张图片
    清单文件可以修改,编辑后执行 jar cfm JARFileName ManifestFileName.
  • 可执行jar文件
    jar命令中e选项指定程序的入口点,在调用Java程序加载器时指定类jar cvfe MyProgram.jar com.mycompany.mypkg.MainAppClass files to add 或者在清单文件中使用Main-Class: com.mycompany.mypkg.MainAppClass
    启动应用程序:java -jar MyPropram.jar
    JavaSE程序的打包_第4张图片
    JavaSE程序的打包_第5张图片
  • 资源
    图像和声音文件、带有消息字符串和按钮标签的文本文件、二进制数据文件。
    1)获取具有资源的Class对象,例如GetAudioClip方法进行读取。
    2)如果资源是一个图像或者声音文件,那么就需要调用getresource(filename)获得作为URL的资源位置,然后利用getImage或getAudioClip方法进行读取。
    3)与图像或声音文件不同,其他资源可以使用getResourceAsStream方法读取文件中的数据。
        JButton button = new JButton("按钮一");
        URL url = Test001.class.getResource("hello.gif");
        button.setIcon(new ImageIcon(url));

在这里插入图片描述
JavaSE程序的打包_第6张图片

import java.io.InputStream;
import java.util.Scanner;

public class ReadText {
    public static void main(String[] args) {
        InputStream inputStream = ReadText.class.getResourceAsStream("about.txt");
        Scanner in = new Scanner(inputStream, "UTF-8");
        while (in.hasNext()) {
            System.out.println(in.next());
        }
    }
}

JavaSE程序的打包_第7张图片
JavaSE程序的打包_第8张图片

  • 密封
    可以保证不会有其他类加入到包中,在清单文件的主节中加入下面一行Sealed:true来改变全局的默认设定。对于每个单独的包,可以通过在清单文件中增加一节,来指定是否想要密封这个包。
    Name:com/mycompany/util/
    Sealed:true
    Name:com/mycompany/misc/
    Sealed:false

用密封创建jar包
jar cvfm MyArchive.jar mamifest.mf files to add

二、小记

慢慢探索、深入,争取写出点有意义的东西。

三、引用

[1]《Java核心技术卷一》

你可能感兴趣的:(JAVA)