损坏的 jar 文件
我使用eclipse在Windows 7中创建了一个jar文件。当我尝试打开jar文件时,它说无效或损坏的jar文件。任何人都可以建议我为什么jar文件无效?
我使用eclipse在Windows 7中创建了一个jar文件。当我尝试打开jar文件时,它说无效或损坏的jar文件。任何人都可以建议我为什么jar文件无效?
当您在Windows资源管理器中双击JAR文件时,就会发生这种情况,但JAR本身实际上不是可执行JAR。一个真正的可执行JAR应该至少有一个带有方法的类,并在 中引用它。main()
MANIFEST.MF
在Eclispe中,您需要将项目导出为可运行的JAR文件而不是JAR文件,以获得真正的可执行JAR。
或者,如果你的JAR只是一堆密切相关的类(库)的容器,那么你不应该双击它,而应该使用一些ZIP工具打开它。Windows资源管理器即默认情况下将JAR文件与相关联,这不适用于这些类型的库JAR。java.exe
当您更改 JAR 上的 ZIP 扩展名、提取 zip 内容并对文件进行一些修改(如更改清单)时,通常会发生这种情况。MF文件是一个非常常见的情况,很多时候Eclipse没有像我们想要的那样生成MANIFEST文件,或者也许我们想修改它的CLASS-PATH或MAIN-CLASS值。
当您压缩回文件夹时,会出现此问题。
有效的可运行/可执行 JAR 具有下一个结构:
myJAR (Main-Directory)
|-META-INF (Mandatory)
|-MANIFEST.MF (Mandatory Main-class: com.MainClass)
|-com
|-MainClass.class (must to implement the main method, mandatory)
|-properties files (optional)
|-etc (optional)
如果您的JAR符合这些规则,那么如果您使用ZIP工具手动构建它,然后将扩展名更改回.jar
完成后,请尝试使用以下命令在命令行上执行它:
java -jar myJAR.jar
当您使用zip工具解压缩,更改文件并再次压缩时,通常JAR结构会更改为此结构,这是不正确的,因为在文件系统的顶部添加了另一个目录级别,使其成为损坏的文件,如下所示:
**myJAR (Main-Directory)
|-myJAR (creates another directory making the file corrupted)**
|-META-INF (Mandatory)
|-MANIFEST.MF (Mandatory Main-class: com.MainClass)
|-com
|-MainClass.class (must to implement the main method, mandatory)
|-properties files (optional)
|-etc (optional)
:)