日博365怎么样

JAR (文件格式)

JAR (文件格式)

一个JAR文件允许Java运行时高效地部署一组类和它们相关的资源。JAR文件中的元素可以被压缩,这样一来,在单个请求中下载整个应用程序,使得下载一个JAR文件比对构成一个Java应用的许多未压缩的文件单独下载更方便。包java.util.zip包含读写JAR文件的类。

JAR文件在路径META-INF/MANIFEST.MF下有一个可选的Manifest文件。Manifest文件中的条目定义这个JAR文件如何被使用。例如,类路径条目由其他JAR文件的绝对或相对路径的列表组成,用于指定在加载本JAR文件时同时加载的其他JAR文件。虽然旨在简化JAR的使用,但在实践中证明Manifest文件是非常脆弱的,因为入口点JAR在创建时依赖于所有相关的JAR的确切位置。一旦需要更改版本或库的位置,必需重建Manifest文件。

为了提取JAR文件的内容,用户可以使用任何标准的unzip解压缩软件,或者每个Java虚拟机都带有的jar命令:“jar -xf foo.jar”。

开发者可以对JAR文件进行数字签名。在这种情况下,签名信息成为嵌入的Manifest文件的一部分。JAR本身并没有被签名,而是归档内的每一个文件的校验和连同其名字作为签名,被记录在Manifest文件中。多个实体可能签署一个JAR文件,并在每次签名时改变这个JAR文件,虽然签署文件本身仍然有效。当Java运行时加载签名的JAR文件时,它可以验证签名并拒绝加载签名不匹配的类。Java运行时也支持“密封”的包(Sealed Packages)。类加载器一旦成功装载密封包中的某个类后,其后加载的类必须是由同一实体签名,才被允许加载到同一个包。这可以防止恶意代码被插入到现有的软件包,以至于接触到包范围内的类和数据。

开发者可以对JAR文件进行混淆,这样该JAR文件的用户无法得到关于该JAR文件所包含的代码的太多信息,并且能够压缩文件大小。这在空间受限的嵌入式系统开发中很有用。

可执行JAR文件

编辑

一个可执行Java程序以及其使用的库文件可以打包在一个JAR文件中。

可执行的JAR文件中的Manifest文件用代码Main-Class: myPrograms.MyClass指定了入口点类,注意要指明该类的路径(-cp参数将被忽略)。有些操作系统可以在点击后直接运行可执行JAR文件。而更典型的调用则是通过命令行执行“java -jar foo.jar”。

在多数平台上可以使用封装器封装可执行JAR文件。例如,对于更喜欢使用Windows EXE的Microsoft Windows用户而言,可以使用工具(如JSmooth(英语:JSmooth)、Launch4J(英语:Launch4J)、WinRun4J(英语:WinRun4J)、Nullsoft脚本安装系统等),将单个JAR文件转换为可执行文件。

相关推荐