腐败的jar文件

Nee*_*eel 33 java eclipse windows jar

我使用eclipse在Windows 7中创建了一个jar文件.当我尝试打开jar文件时,它表示无效或损坏的jar文件.任何人都可以建议我为什么jar文件无效?

Bal*_*usC 40

在Windows资源管理器中双击JAR文件时会发生这种情况,但JAR本身实际上不是可执行的 JAR.一个真正的可执行JAR应该至少有一个带有main()方法的类并在其中引用它MANIFEST.MF.

在Eclispe中,您需要将项目导出为Runnable JAR文件而不是JAR文件,以获得真正的可执行JAR.

或者,如果您的JAR只是一堆密切相关的类(库)的容器,那么您不应该双击它,而是使用一些ZIP工具打开它.Windows资源管理器默认情况下将JAR文件与之关联java.exe,这对于那些类型的库JAR不起作用.

  • 对不起,我不会参加个人聊天.如果您需要个人支持,请聘请建筑师或询问您的导师.或者在这里问一个新问题.这个新问题与您当前的问题无关. (6认同)

Isr*_*elm 18

当您更改JAR for ZIP的扩展名,提取zip内容并对文件进行一些修改(例如更改MANIFEST.MF文件这是一种非常常见的情况)时,会经常发生这种情况,很多时候Eclipse不生成MANIFEST文件我们想要,或者我们想要修改它的CLASS-PATH或MAIN-CLASS值.

压缩文件夹时会出现问题.

有效的Runnable/Executable 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)
Run Code Online (Sandbox Code Playgroud)

如果JAR符合这些规则,那么如果您使用ZIP工具手动生成它并且然后将扩展更改回.jar将无效

完成后,尝试使用以下命令在命令行上执行:

java -jar myJAR.jar 
Run Code Online (Sandbox Code Playgroud)

当您使用zip工具解压缩,再次更改文件和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)
Run Code Online (Sandbox Code Playgroud)

:)

  • 谢谢!这让我发疯了.如果你使用`zip -r myproject.jar myproject/*`,生成的jar会将`myproject`文件夹复制到root中.从`myproject /`目录运行`zip -r ../myproject.jar*`将打包一个有效的jar. (3认同)

thS*_*oft 11

问题可能是你的JAR中有超过65536个文件:为什么java会抱怨有大量条目的jar文件?该问题的答案中描述了该修复程序.


pra*_*upd 9

可能是因为问题MANIFEST.MF.如果您知道主类所在的包,请尝试使用以下命令启动主类.

java -cp launcher/target/usergrid-launcher-1.0-SNAPSHOT.jar co.pseudononymous.Server
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!!它帮助.我有Java + Scala集成代码. (2认同)