【发布时间】: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