`

打包成jar文件后运行出现Invalid or corrupt jarfile 解决

阅读更多

【案例1】

 

jar太大,如超过100M

【解决】在POM文件中exclusion不必要的大的依赖。如:

<dependency>

<groupId>com.s</groupId>

<artifactId>r-dal</artifactId>

<exclusions>

<exclusion>

<artifactId>hibernate-core</artifactId>

<groupId>org.hibernate</groupId>

</exclusion>

          </exclusions>

</dependency>

 

【案例2】

MANIFEST.MF 错误

 

打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
 
 
 
 
其中比较容易忽略的是还可以有一个Class-Path属性的设置,Class-Path:用来指定支持库的路径,程序运行时依据 Class-Path项的设置路径来查找支持库,每一个支持库之间用空格分开。比如这样写清单文件:
 
 
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.Index
Class-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 (证明)可以放在任何位置,也可以是其它的文件名,

 

只需要有 Main-Class: test.Test 一行,且该行以一个回车符结束

 

 

 

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

 此处回车

 

 

 

【案例3】

 

 

 

本地上传文件错误

 

本地上传文件是以ASCII的方式上传到的,结果造成jar文件格式错误。

        

把左下角的“以ASCII方式上传文件”点掉

 

分享到:
评论

相关推荐

    Invalid or corrupt jarfile(解决方案).md

    Invalid or corrupt jarfile(解决方案).md

    sbt-launch-0.13.6.jar

    针对SparkR安装出现的Invalid or corrupt jarfile sbt/sbt-launch-0.13.5.jar替代

    AXMLPrinter2.jar 资源文件xml破解

    AXMLPrinter2.jar 资源文件xml破解Android反编译清单文件乱码解析

    rocketmq-console-ng-1.0.0.jar

    这是用maven编译好的rocketmq控制台jar包,可以直接用 java -jar xxxx.jar来运行,我配置的端口是8082

    唯一解决 Protel 99 SE 'Format '%x' invalid or incompatible 的方法

    标题中的问题 "Format '%x' invalid or incompatible" 是在使用Protel 99 SE这款电路设计软件时遇到的一个常见错误提示。这个错误通常出现在软件尝试处理一个格式化字符串时,发现该字符串与传递的参数不匹配或者...

    format ' x' invalid or incompatible with argument 解决办法

    ### "format ' x' invalid or incompatible with argument" 解决办法 在进行电子设计自动化(EDA)软件Protel 99 SE的操作过程中,用户可能会遇到一个常见的错误提示:“format ' x' invalid or incompatible with ...

    解决 Protel 99 SE 'Format '%x' invalid or...

    首先,"Format '%x' invalid or"错误通常出现在程序尝试解析十六进制格式的数据时,由于数据格式不正确或无法识别而导致。在Protel 99 SE中,这可能发生在导入自定义库,尤其是当库文件与软件版本不匹配,或者库文件...

    arcgis9.3卸载license出现invalid install.log file状况的方法

    如果文件损坏、缺失或格式不正确,就可能出现“invalid install.log file”的错误。 解决这个问题的第一步是将`install.log`文件复制到ArcGIS的bin目录。bin目录通常包含了软件运行所需的可执行文件和实用工具,...

    解决:protel 99se :format %x invalid or incompatible with argument问

    标题中的问题“protel 99se :format %x invalid or incompatible with argument”是一个常见的错误提示,通常在尝试运行或安装Protel 99SE软件时出现。这个错误表明程序在处理某种格式化字符串(%x)时遇到了不兼容...

    客户端启动出现错误无法运行的解决办法(缺失的jar文件)v1.2

    在Java开发过程中,有时我们可能会遇到客户端在特定环境下无法正常启动的问题,比如在64位机器上启动基于Java的应用时,出现"invalid resource"错误。这通常与环境配置、依赖库或者程序资源文件的缺失有关。针对这种...

    format ' x' invalid or incompatible with argument

    ### 错误解析与解决方案:Format ' x' Invalid or Incompatible with Argument 在使用Protel 99进行PCB设计时,可能会遇到“format ' x' invalid or incompatible with argument”这样的错误提示。这一错误通常出现...

    jsp分页

    分页是指在数据量较大的情况下,为了提高网页加载速度和用户体验,将数据分割成多个小部分,每次只显示其中的一部分,通过分页链接切换显示不同的数据集。在JSP中实现分页,通常涉及到以下几个关键步骤: 1. **获取...

    HMCL-3.5.3.exe

    HMCL-3.5.3.exe

    gis9.3卸载出现invalid install.log file状况的方法

    在本案例中,我们遇到的问题是尝试卸载GIS 9.3时遇到了“invalid install.log file”的错误。这通常意味着在卸载过程中,系统无法找到或读取必要的安装日志文件,导致卸载过程受阻。 为了解决这个问题,我们需要...

    python客户端启动出现错误无法运行的解决办法(缺失的jar文件)

    当出现"invalid resource"错误,通常意味着客户端尝试访问的某个Java资源(如类、库或配置文件)在运行环境中找不到。在本例中,提供的`jb-fix.jar`文件可能就是解决这个问题的关键。这个.jar文件很可能包含客户端...

    protel.99 format '%x' invalid or incompatible with argument打软体报错补丁.rar

    标题中的“protel.99 format '%x' invalid or incompatible with argument打软体报错补丁.rar”指的是Protel 99软件在运行时遇到了一个格式错误,具体表现为使用`%x`格式化字符串与传入的参数不兼容。这通常出现在C/...

    ArcGis卸载出现invalid install.log file状况的方法

    两步,帮助大家很容易实现卸载... (1)下载压缩包并解压得到install.log文件 (2)找到License的默认安转路径,找到卸载工具unwise32.exe,双击打开,选择(1)步下载的install.log文件,并点击next,即可实现完全卸载

    jd-gui反编译(windows)

    3. **加载文件**:通过菜单栏的“File” &gt; “Open File”或直接拖拽文件到窗口,选择要反编译的`.class`、`.jar`或`.zip`文件。 4. **查看源代码**:`jd-gui`将自动反编译并显示源代码。点击类名或方法名,即可查看...

    jdgui---jar文件查看

    Java Archive (JAR) 文件是 Java 平台上的一个打包格式,它将多个 Java 类文件、资源文件以及其他相关文件集合在一起,形成一个单一的可执行文件。JAR 文件常用于分发应用程序、库或者游戏等。它们通常具有 `.jar` ...

    解决arcgis卸载出现invalid install.log

    打开lisense manager的安装目录,点uninstall,选择下载的install。log,祝各位好运。当然也可以选择window install cleaner up移除。

Global site tag (gtag.js) - Google Analytics