【问题标题】:Corrupt JARS in zip using maven使用 maven 在 zip 中损坏 JARS
【发布时间】:2020-09-06 21:07:36
【问题描述】:

我有 maven 项目,我想将其打包成一个 zip 文件,包括 jar 二进制文件(在文件夹 /jars 中)。打包后,我已经解压缩并提取了 jar 文件,但是当我调用它时出现以下错误:

PS C:\Users\kenochrome\Downloads> jar xf service-0.1.jar
java.util.zip.ZipException: invalid literal/length code
        at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:139)
        at java.util.zip.ZipInputStream.read(ZipInputStream.java:142)
        at sun.tools.jar.Main.extractFile(Main.java:715)
        at sun.tools.jar.Main.extract(Main.java:678)
        at sun.tools.jar.Main.run(Main.java:191)
        at sun.tools.jar.Main.main(Main.java:904)

下面是父子pom的sn-p。

父 POM

    <build>
        <finalName>release_1.0</finalName>
        <resources>
            <resource>
                <directory>${basedir}/hello/world/00006/jars</directory>
                <filtering>false</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
                <version>2.7</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                  <configuration>
                    <descriptor>assembly/bin.xml</descriptor>
                  </configuration>
                  <executions>
                    <execution>
                      <phase>package</phase>
                      <goals>
                        <goal>single</goal>
                      </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

子 POM

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>jar</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
                </plugin>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>scala-compile</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>scala-test-compile</id>
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <finalName>service-${project.version}</finalName>
                    <outputDirectory>../../jars</outputDirectory>
                    <resources>
                        <resource>
                            <directory>jars</directory>
                            <filtering>false</filtering>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
    </dependencies>
</project>

如果信息不充分或此问题的格式不正确,我很抱歉。

非常感谢您阅读这篇文章,并提前非常感谢。

【问题讨论】:

  • 检查您是否发布了 JAR。当我使用一些工件时,我遇到了类似的问题,它允许我上传 JAR 甚至从 Web 界面下载它,但是如果我尝试在使用工件的 URL 按下“释放”按钮之前下载它,它返回 404 页面它被保存为(显然无效)JAR。除了它没有 404 行为,所以我没有注意到。
  • 我知道如果您的硬盘已满,可能会出现此类错误。
  • @JF Meier 硬盘肯定不是满的但是谢谢你的评论。
  • @Mateusz Kubuszok 这很奇怪,因为如果我直接从 artifactory 下载 jar 并运行“jar xf ”命令,那完全没问题,但是如果我从由maven 我得到了上面的错误。我猜使用 maven 压缩 jar 可能会导致二进制文件损坏?
  • 尝试检查 ZIP 和 JAR 的大小并进行比较。它可能会显示一些问题。

标签: java scala maven build jar


【解决方案1】:

正在浏览另一个论坛,发现我遇到的问题是在我的描述符程序集 xml 中使用 &lt;lineEnding&gt;unix&lt;/lineEnding&gt; 元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多