首页 > 其他分享 >Jar包的清单文件manifest.MF

Jar包的清单文件manifest.MF

时间:2023-05-26 14:56:05浏览次数:48  
标签:文件 MF Java Jar JAR 应用程序 manifest jar 清单

如何在Java中使用JAR Manifest文件

[摘录](如何在Java中使用JAR Manifest文件(附实例) - 掘金 (juejin.cn))

在Java编程语言中,清单文件是一个文本文件,它包含与程序员的JAR归档文件中包含的文件有关的元数据。这种元数据的范围可以从与包信息有关的信息到安全属性的属性。

一个程序在其JAR归档中只能有一个清单文件,因此,对于开发人员来说,了解如何与这些清单文件打交道以及如何正确使用它们非常重要。在这个Java教程中,你将学习如何在你的Java应用程序中使用JAR清单文件。

Java中的默认清单文件

当您创建一个JAR文件时,也会随之创建一个默认的清单文件。该文件最初包含与清单版本和 JDK 版本有关的两个字段。例如,以下是一个典型的清单文件的内容:

Manifest-Version: 1.0
Created-By: 11.0.3 (Oracle Corporation)

默认清单总是位于JAR文件的路径META-INF/MANIFEST.MF中。

如何在 Java 中修改清单文件

开发人员可以手动修改清单文件,也可以在创建JAR文件时使用m选项来修改。手动修改文件意味着直接向其中添加条目。

正如您在上一节所注意到的,JAR文件包含头:值对。你也可以为你想要的头:值对添加一个条目。然而,需要注意的是,在最后一个条目之后,程序员应该添加一个新行字符。否则,最后一个条目将不能被正确解析。

另外,程序员也可以使用m选项来修改JAR清单文件,如下所示:

jar cfm ArchiveName.jar  add-to-manifest.txt files-to-include

m选项指定您打算将某个文本文件(如add-to-manifest.txt)中的某些信息合并到您现有的JAR清单文件中。

开发人员必须注意,f和m选项的出现顺序应与各自的参数相匹配。您还需要确保您的文本文件以一个新行字符结束。

接下来的两节描述了一些特殊的用例,你可以用你的JAR文件来应用。

JAR文件和Java应用程序打包

JAR文件有时被用来包装Java应用程序。当你决定在JAR文件中运行一个应用程序时,程序员需要指定要使用的入口点。入口点是指你的main()*方法所定义的类。要定义你的应用程序的入口点,请使用*Main-Class头。

例如,如果您的入口点是PackageName包中的ClassName,那么您应该在清单文件中包含以下条目:

Main-Class: PackageName.ClassName

要在你的JAR归档中运行应用程序,你现在可以使用下面的命令:

java -jar  ArchiveName.jar

你也可以使用JAR工具的e选项为你的应用程序设置入口点。需要注意的是,该选项会覆盖您清单文件中的Main-Class头。

下面的Java代码示例创建了一个名为ArchiveName.jar的归档文件,入口点设置为MyClass.class

jar cfe ArchiveName.jar * MyClass.class

在更新您的JAR归档文件时,您也可以使用e选项。如果你的入口点在一个目录中(比如说MyDirectory),那么你在命令行中指定它时可以使用正斜线'/'

jar cfe ArchiveName.jar * MyDirectory/MyClass.class

如何将类添加到JAR Classpath中

在打包你的应用程序时,程序员可能会把不同的类放在几个jar文件中。这里有一个很好的例子,如果一个打包在JAR归档文件中的小程序与打包在不同JAR归档文件中的依赖关系。

为了确保另一个JAR归档文件中的类在你运行时被加载到你的JAR文件中,你需要在你的调用JAR文件中添加它们的classpath

只要在清单文件的Class-Path头中设置路径就可以了。例如,如果要加载的JAR文件与您的调用JAR文件在同一目录下,您可以使用下面的方法:

Class-Path: Other-JAR-File.jar

关于 Java 清单文件的最终想法

清单文件允许开发人员描述与JAR存档中的文件有关的信息。如前所述,一定要记得用一个新行字符来结束你的JAR文件的修改文本文件。

标签:文件,MF,Java,Jar,JAR,应用程序,manifest,jar,清单
From: https://www.cnblogs.com/zhenhunfan2/p/17434742.html

相关文章

  • 基于 python 的 nexus 私服 jar 包匹配查找程序
    程序通过计算jar包的sha1摘要,到maven仓库查询对应路径,适用于NexusRepositoryManagerOSS2.14.11-01,其他版本未做测试注意:jar包路径中不要出现空格#!/usr/bin/python3importhashlibimportosimportrequestsimportsysimporttempfilefromxml.etreeimport......
  • IDEA中Java项目创建lib目录(添加依赖jar包代替maven依赖)
    文章目录1.右键点击项目,创建一个普通的文件夹2.取名为lib3.把项目所需的jar包复制到lib文件夹下4.然后AddasLibrary…构建项目所需的jar包5.点击ok(完成jar包的自动依赖)1.右键点击项目,创建一个普通的文件夹2.取名为lib3.把项目所需的jar包复制到lib文件夹下4.然后Add......
  • MFC-通过HWND获取HANDLE
    HWNDhWnd=::FindWindow(_T("Windows.UI.Core.CoreWindow"),NULL);//获取与指定窗口类名和窗口名的最顶层窗口的窗口句柄//寻找系统计算器句柄(win10)if(!hWnd){AfxMessageBox(_T("系统计算器句柄没找到"));}DWORDpid=NULL;......
  • Linux和Windows下使用指定的JDK运行jar包
    Linux1.下载jdk软件包(例如:jdk-8u161-linux-x64.tar.gz)后解压2.启动jar命令jdk根目录/bin/java-jarxx.jarWindows1.下载jdk环境(jre文件夹)2.启动jar命令jdk根目录/bin/java-jarxx.jar ......
  • jenkins--构建传输jar包后启动java服务
    jenkins--构建传输jar包后启动java服务目标:针对单体java服务前置条件:jdk1.8日志切割cronologjdk1.8安装cronolog安装创建server.sh脚本文件#!/bin/bashJAR_PATH="/data/forwarder"#文件目录JAR_FILE="ruoyi-admin.jar"#文件名LOG_PATH="/data/forwarder/logs"#cro......
  • Esxi6.7 添加硬盘时提示 无法创建 VMFS 数据存储 - 无法更改主机配置 Group2 Raid5
     ESXI添加硬盘时提示无法创建VMFS数据存储-无法更改主机配置1.打开ESXI的SSH2.找到不能添加的硬盘路径3.用SSH操作 1.打开ESXI的SSH2.找到不能添加的硬盘路径我的是**个,找到你要添加但是不能添加的那个硬盘,点进去。完整的路劲为:比如我的:/vmfs/devices/disk......
  • C++ MFC 学习笔记+小型通讯录系统实现
    [MFC最详细入门教程](https://blog.csdn.net/freeking101/article/details/101013627?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168387812916782427455065%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=1683878129167824274550......
  • 用rust 写一个jar包 class冲突检测工具
    Rust很适合写命令行工具,特别是使用clapcrate更加方便,这篇文章介绍使用rust写一个jar包class冲突检测的工具。项目地址:https://github.com/Aitozi/jar_conflict_detector首先jar包class冲突的现象是多个jar包中有同名的class,并且class的md5还不一样,那么就意味着该class存在多......
  • 小爱同学调用本地jar -巴法云
    本文通过巴发云注册mqtt服务并在小爱同学注册实现为什么要用巴法云的自然是因为他免费啦1.准备1.1注册巴法云https://cloud.bemfa.com/1.2在巴法云上创建mqtt设备云注意主题名称一开始最好是006结尾不是数字小爱是不会识别的点击昵称就可以直接修改并且昵称和......
  • 解决启动jar包报错:错误找不到或无法加载主类 jar
    错误:找不到或无法加载主类jar问题描述:在使用springboot框架对项目打包后,手动使用命令java-jar包名启动jar包,报错:错误:找不到或无法加载主类jar。网上找了各办法,都是加maven插件,打成可执行jar包<build><plugins><plugin><groupId>org.springframework.bo......