打包成jar文件后运行出现Invalid or corrupt jarfile 解决
Posted master_yao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打包成jar文件后运行出现Invalid or corrupt jarfile 解决相关的知识,希望对你有一定的参考价值。
Invalid or corrupt jarfile /home/WebService.jar
Failed to load Main-Class manifest attribute from
/home/WebService.jar
打jar包
1.jar -cvf hello.jar hello.class
2.这时java -jar hello.jar 是运行不了的
3.解压刚打的Jar包到新的目录,会发现里边多了一个META-INF文件夹里边有一个MANIFEST.MF文件
4.用记事本打开MANIFEST.MF文件,修改为
Manifest-Version: 1.0
Main-Class: Hello
Created-By: aaa
5.将MANIFEST.MF复制到和Hello.class 放在一起
然后打包:
jar cvfm abc.jarMANIFEST.MFHello.class
得到可运行的jar
java -jar *** 就可以运行的jar包[ 其中***为jar包名]
打 Java 包的时候可以有一个清单文件:MANIFEST.MF,它是打包的关键性文件,主要是设置执行入口类和支持库的路径,在运行 Java应用程序时会根据此文件中给出的信息来查找入口类和支持库。 它的内容一般包括:
Manifest-Version: 1.0 Created-By: 1.6.0 (Sun Microsystems Inc.) Main-Class: HelloWorld |
Manifest-Version: 1.0 Class-Path: ./lib/msbase.jar ./lib/mssqlserver.jar ./lib/msutil.jar Created-By: yourName Main-Class: org.qiujy.test.TestDB |
如果出现:
java.io.IOException: invalid header field
这样的错误的话,就说明MANIFEST.MF文件有问题,比如写成了这样:
Manifest-Version: 1.0
Main-Class:com.feishan.lottery.view.IndexClass-Path: jar/jdbc_feishan.jar jar/mysql5.0.3.jar
注意:
Main-Class:后面应该有一个空格:Manifest-Version: 1.0
Main-Class: com.feishan.lottery.view.Index
Class-Path: jar/jdbc_feishan.jar jar/mysql5.0.3.jar
这样写就对了注意:最后一行也要有一个回车键。否则后面那一行是不能打包进去的
最后用java -jar lottery.jar就可以运行了
这个 manifest.mf (证明)可以放在任何位置,也可以是其它的文件名,
Manifest 技巧说明:
总是以Manifest-Version属性开头
每行最长72个字符,如果超过的化,采用续行
确认每行都以回车结束,否则改行将会被忽略
如果Class-Path 中的存在路径,使用"/"分隔目录,与平台无关
使用空行分隔主属性和package属性
使用"/"而不是"."来分隔package 和class ,比如 com/example/myapp/ (好像使用" ." 也可以)
class 要以.class结尾,package 要以 / 结尾
还有
你设置java_home了吗?
想要删掉环境变量PATH只要把c:/java/jdk/bin(具体看你的路径)的“;”前的删掉就好了
打开path 点下面那一大串,按home键(为了将光标移到开头)
把你javac.exe的路径copy(只要文件夹路径)加到path然后加“;”号
最后在cmd 里测试下 java-version
总得来说,解决办法:
Manifest-Version: 1.0 Sealed: true Main-Class: cn.baidu.main.Publish 此处回车 |
以上是关于打包成jar文件后运行出现Invalid or corrupt jarfile 解决的主要内容,如果未能解决你的问题,请参考以下文章
我在将java的.class文件打包成.jar文件后运行不了“Failed to load Main-Class”。怎么办?