关于 jar包中MANIFEST.MF 写法

IDEA打jar包时出现manifest.mf already exists in vfs解决办法 1.什么是MANIFEST.MF 下面MANIFEST.MF的介绍来自百度百科http://baike.baidu.com/link?url=QQ97CnYdkb0RqF33qFh9XiRfF_2NGW_RsZned0F9yC_JVvaayEFVciKj2OFYb7DXaKPr1_BkW-MjSXCqGodN0_ 打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF 阅读详情
 

例如我们打包的jar为 Test.jar

Manifest-Version: 1.0
Main-Class: windows.VideoWindow
Class-Path: lib\org.eclipse.swt_3.3.0.v3346.jar lib\org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar

上面为打包为jar中的包说明文件. 下面这个报错一直出现.
could not find main class. Program will exit
这个错误提示其实不是没有发现main class. 而是jar如果有错误执行不了,就会出现这个错误. 打包完成后, 要先运行 cmd -> java -jar your.jar 确认没有问题即可执行jar. 使用-jar参数后, 系统的Classpath 变量不再起作用. 虚拟机将去MANIFEST.MF中的Class-Path 下找相关的包.
然后才能成功的从: windows.VideoWindow 的main方法进入. 否则没有相关连接包,则会提示找不到main class. 而大家可能还迷糊的找不到北. 明明有main class吗.

如果这个写的不对. 则就会一直报错.
看看上面这个Class-Path: 后面的写法. 空格分开. 绝对不能有分号.切记.

最后必须有换行. 这个也是要注意的. 否则依然提示没有mainclass.

不要因为这个小事情耽误了时间. 其中 lib/ 表示这个jar必须在打包Test.jar所在目录的一个lib子目录中.

运行jar需要命令: java -jar Test.jar
双击也可以, 则使用 javaw 打开.

关于java -classpath a.jar;b.jar; class test.Test 执行时. a.jar;b.jar; 后面都必须有分号. 否则报错. 不要指望不写classpath让系统自己找. 这不是在eclipse里面.必须写上你要使用的类. 否则总会提示您编译出错.

2、MANIFEST.MF 文件中奇怪的分行和空格要求

工作中发现的一个非常奇怪也很有趣事情,有关MANIFEST.MF文件中的分行和空格的格式要求,分享给大家。

    对于通常的MANIFEST.MF文件,一般格式是:

Class-Path: lib/a.jar lib/b.jar lib/c.jar lib/d.jar lib/e.jar lib/f.jar
    在一行之内将所有的jar包路径写上,空格分隔即可。

    但是对于一些大型的项目,因为依赖包众多,比如大于30个,那么如果还写在一行内,就会出现一个长度惊人的行。程序运行倒不会有任何问题,但是对于版本控制就很不友好,如增加或者减少一个依赖包,这行就会被改写。以后compare不同版本时,只能知道这行被修改了确无法直接知道是做了什么修改,必须通过其他方式才能对比出来。

    同样的问题发生在code merge时,如果两个分支都修改了这个文件,就必须通过手工来进行merge,而且要对照出来彼此到底改了什么,很困难而且容易出错。

    因此一个改进就是将这个文件中的依赖按照一行一个依赖的方式重写,这样以后修改时只会修改改依赖所在的行,很容易就对比出来具体做了哪些感动,code merge时版本控制软件一般也很容易直接自动merge成功。

    修改后的文件类似如下:

Class-Path: lib/a.jar
    lib/b.jar
    lib/c.jar
    lib/d.jar
    lib/e.jar
    lib/f.jar

    但是在实际操作时发生了意料之外的问题,会出现异常或者类无法找到,经检查发现问题出现在MANIFEST.MF的格式上,MANIFEST.MF对于分行和空格是有特殊要求的:

1. 每行的最后一个jar的名称后不容许有空格
    即"    lib/b.jar"在b.jar后必须回车结束本行,不能有空格,一个都不能

2. 每行的开头必须有不少于2个空格
    即"    lib/b.jar"在b.jar前必须有不下两个空格

3.最后一行要回车换行,但不能有空格

    以上三个条件有一个不满足都会出现问题,有点古怪。

4、严格的MANIFEST.MF格式
今天才发现这个文件的格式要求比较严格,因为使用的包比较多,所以那个Class-path的内容就比较多,我全部放在了一行,结果服务器启动读取那个文件的时候报错,错误信息是行太长,把它们切成多行,结果又是无效的头字段(java.io.IOException: invalid header field),和工程里面的其它文件比较了下,发现换行后要在前面加一个空格,后来又发现明明包含了一个包,但是找不到类,又在每行的后面加了一个空格,这下才完全搞定。

【云原生技术】MANIFEST.MF 文件是jar包里面的吗还是sonarqube本身带的? 确保选定的插件键是唯一的,并遵循合理的命名约定。在上传并重启 SonarQube 后,您的插件应该能够成功加载。 阅读详情

相关推荐

【Java】MANIFEST.MF是什么

1.概述 常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件。通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了;而另一种是使用 JET 来进行 编译。但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序都编译成执行文件,性能也要打些折扣。所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性。 下面就来看看什么是 JAR 文件包吧: 2. JAR 文件包 JAR 文件就是.

九师兄 8108

你对MANIFEST.MF这个文件知道多少?

至于为什么要将清单文件命名为 "MANIFEST.MF",可能是因为这个文件最早是在早期的 UNIX 系统中使用的,而在 UNIX 中,".manifest" 是一种用于描述软件包或文件集合的文件名后缀。而 ".MF" 则是指该文件的格式是基于 Manifest 文件格式(MF,Manifest File Format)的,这也是 JAR 文件格式中的一部分。在 Java 中,MANIFEST.MF 文件就是一种用于描述 JAR 文件中包含的类和资源的清单文件,其中包含了一些元数据信息和属性。

G探险者的博客 8552

彻底解析Java JAR文件中的MANIFEST.MF文件

在Java世界中,JAR(Java Archive)文件是一种打包机制,用于将多个文件组合成单个压缩包。每个JAR文件都包含一个文件,它是JAR文件的清单(manifest)文件,用于描述了JAR文件的各种属性和配置。在Java应用程序中,JAR文件被用作打包和分发应用程序的一种方式。为了使JAR文件能够被Java运行时环境(JRE)识别并直接运行,需要在JAR文件的MANIFEST.MF文件中声明一个主类。主类声明是通过Main-Class属性实现的,它指定了一个包含main。

weixin_42577243的博客 1595

MANIFEST.MF的用途

可以用的上的有:     1. Main-Class 指定程序的入口,这样可以直接用java -jar xxx.jar来运行程序。    2. Class-Path 指定jar包的依赖关系,class loader会依据这个路径来搜索class。我平时用mf文件一般说来都是让jar成为可以直接运行这一目的。虽然目的这么简单,但是每次打包还是很容易出现各种各样的问题让

Kevin的程序人生 4560

MANIFEST.MF 文件内容详解(转)

NULL 博文链接:https://wv1124.iteye.com/blog/573020

Tessent实战:网表扫描链插入全流程解析

本文详细解析了使用Tessent工具为网表插入扫描链(Scan Chain)的全流程。从前期环境配置、网表检查,到扫描链数量、时钟域等核心配置,再到执行扫描单元替换与连接,最后进行结果验证与文件输出。文章提供了关键命令与实用技巧,帮助工程师高效完成DFT设计,确保芯片可测试性。

hhh00的博客 745

MANIFEST.MF文件使用说明

JAR 文件支持广泛的功能,包括电子签名、版本控制、包封装等等。什么赋予 JAR 文件这种多样性?答案是 JAR 文件的 MANIFEST 文件。MANIFEST 是一个特殊的文件,可以包含有关打包在 JAR 文件中的文件的信息。通过调整 MANIFEST 包含的这些“元”信息,您可以使 JAR 文件具有各种用途。本课程将解释 MANIFEST 文件的内容,并向您展示如何处理它,包括以下基本功能的示例:1.了解默认 MANIFEST2.修改 MANIFEST 文件3.设置应用程序的入口点。

u011624157的专栏 5079

《AI应用架构师必学:企业AI能力地图构建的高级技巧》

企业AI能力地图,简单来说,是一种可视化工具,它展示了企业在AI领域所具备的各种能力及其相互关系。就如同城市地图展示城市的街道、建筑和设施一样,AI能力地图呈现了企业在数据处理、模型开发、算法应用等多个方面的能力布局。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 819

eclipse打包含有第三方jar库的jar包

在打包之前先在工程目录下建立一个名字为MANIFEST.MF MANIFEST.MF内容如下: Manifest-Version: 1.0 Class-Path: ./lib/aopalliance-1.0.0.jar ./lib/cglib-nodep-2.1_2.jar ./lib/commons-beanutils-1.7.0.jar ./li...

weixin_30790841的博客 192

东方财富 vs 新浪 vs AKShare:3 种股票实时数据接口性能与稳定性实测对比

本文深度评测了东方财富、新浪和AKShare三种股票实时数据接口的性能与稳定性。通过实际测试数据,从延迟、成功率和数据完整性三个维度进行全面对比,为量化交易和数据分析开发者提供选型参考。结果显示,东方财富接口在实时性和稳定性方面表现最优,适合高频交易场景。

weixin_30800807的博客 386

Sony微单相机alpha6000 wifi远程控制(1)

引言 Sony’s Camera Remote API beta SDK allows you to control a number of Sony cameras, including Sony Action cams, Sony Alpha cameras and Lens Style cameras, wirelessly from another device. 索尼于2017年三月Re...

markfuk996的博客 4965

java生成cmd jar包_cmd 命令行下 java class生成jar包

进入dos操作符窗口cd进入要打成jar包的class文件所有文件夹目录jarcvf[生成jar的名称.jar][列出class文件]//若有多个,以空隔隔开如:一。操作零散的单个或几个class文件jarcvfibstool.jarcom/cn/ibs/TurnD.classcom/cn/ibs/TurnB.class二。把一个文件夹下面的所有class文件打成jar包jarc...

weixin_36278287的博客 424

【肌电处理】肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率【含Matlab源码 3386期】

肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 822

java工程打jar包

下面记录一下打jar包的方法 对于含有第三方jar的工程需要写MANIFEST.MF文件,文件结构如下: 1 Manifest-Version: 1.0 2 Class-Path: lib/dom4j-2.0.2.jar lib/selenium-server-standalone-2.50.1.jar3 Main-Class: SeleniumDemo4 注意:   A.文件...

weixin_30687811的博客 202

Python 安装 PyTorch(GPU)详细教程

本章教程,介绍如何安装PyTorch GPU版本的具体教程。

猿小白的博客 1617

CloudCompare 二次开发(9)——半径滤波

基于PCL对CloudCompare软件进行二次开发,实现的算法功能是半径滤波

点云侠的博客 1400

jar包中的MANIFEST.MF文件解析

在java的jar文件中,经常可以看到包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息。 Jar文件的目录结构如下: 下面详细介绍MANIFEST.MF文件的内容,先来看zookeeper-3.3.1.jar中包含的MANIFEST.MF文件内容: Manifest-Version: 1.0 Ant-Ve

Scott的专栏 5565

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java jar包中 MANIFEST.MF文件详解

打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内容,先来看struts.jar中包含的MANIFEST.MF文件内容: Manifest-Version: 1.0 Created-By: Apache Ant1.5.1 ...

【小石头的茅坑】 72万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java原生和SpringBoot读取jar包中MANIFEST.MF的方式

java原生和SpringBoot读取jar包中MANIFEST.MF的方式

Brucelwl的博客 6856

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

JAR包中的MANIFEST.MF文件详解以及编写规范

参考百度百科的解释如下: http://baike.baidu.com/item/MANIFEST.MF MANIFEST.MF:这个 manifest 文件定义了与扩展和包相关的数据。单词“manifest”的意思是“显示” 打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的...

GoodIdea 1万+

Maven打jar包时MANIFEST.MF文件的重要性,MANIFEST.MF文件详细介绍

打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息。个人理解,MANIFEST.MF文件是jar文件运行依赖的入口,maven打jar包时,MANIFEST.MF文件配...

chujia1956的博客 8280

MANIFEST.MF文件详解

文章目录一. 一般属性二. 应用程序相关属性三. 小程序(Applet)相关属性四. 扩展标识属性五. 包扩展属性六. 签名相关属性七.自定义属性JAR 文件是什么?META-INF 目录常见的 jar 工具用法可执行的 JAR创建可执行 JAR启动可执行 JAR包密封扩展打包JAR 文件中的安全性签名 JAR 中的 Manifest 和 signature 文件数字签名Keystorejarsigner 工具JAR 索引创建一个 JarIndexJarIndex INDEX.LIST 文件示例结束语 打开

GD_vigoss的博客 5638

jav中jar包的MANIFEST.MF

<br />   打开Java的JAR文件我们经常可以看到文件中包含着一个METAR-INF目录,这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内容,先来看struts.jar中包含的MANIFEST.MF文件内容:<br />Manifest-Version:1.0 Created-By:Apache Ant 1.5.1 Extension-Name:Struts Framework Specificati

kardelpeng的专栏 2171

Eclipse导出Jar包,修改Manifest.MF文件的Calss-Path

今天在需要导出公司以前很早的一个Java编写的小工具类的时候,导出的jar包运行总是出错,报类依赖路径错误。查了许久才发现,原来是打包出来的jar包中,Manifest.MF文件中的根本没有Calss-Path路径。现在,将本人找到的两个解决方式写下,以便有同学出现类似错误,可以及时改正。 解决方法如下: 一、解压jar包,修改Manifest文件     1、第一种打包jar包的方式是普遍

小圣_fighting的博客 1万+

jar包中MANIFEST.MF文件的Class-Path包引用

每次在导出一个可执行jar包时,MANIFEST.MF文件中的jar引用路径都让我很难受,后来发现了一种非常好用的方法,推荐给大家 这个方法借助了eclipse的导出功能,下面看步骤: 1、选定项目右键-->Export-->选择Runnable JAR file 2、点击Next,选择一个可执行类(没有的话随便选择一个),指定jar包存放路径,Library handlin...

caileigood的博客 1万+
上一篇: RCP中调用EJB
下一篇: android 系统开机运行指定程序
happy hell
博客等级 码龄23年 136粉丝 179原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值