我正在创建一个独立的 java 应用程序,它将 tar.gz 解压缩为 .tar 文件。
GZIPInputStream gZIPInputStream = new GZIPInputStream(is);
FileOutputStream fos = new FileOutputStream(tarFile);
byte[] buffer = new byte[2048];
int len;
while((len = gZIPInputStream.read(buffer)) > 0){
fos.write(buffer, 0, len);
}
fos.close();
gZIPInputStream.close();
下面的代码在 Eclipse 中运行时工作正常,但是当我创建一个可运行的 jar 并使其在 Linux 服务器中运行时,它会抛出以下错误。
java.util.zip.ZipException: invalid code lengths set
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:117)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.bcs.wiposcrape.service.WipoDataServiceImpl.deCompressGZipFile(WipoDataServiceImpl.java:218)
at com.bcs.wiposcrape.service.WipoDataServiceImpl.unZipFTPFiles(WipoDataServiceImpl.java:126)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:206)
at com.sun.proxy.$Proxy33.unZipFTPFiles(Unknown Source)
at com.bcs.wiposcrape.launch.WipoScrape.scrapeLaunch(WipoScrape.java:56)
at com.bcs.wiposcrape.launch.WipoScrape.main(WipoScrape.java:22)
该错误实际上是从代码片段的第 5 行抛出的。有人可以帮我找出真正的问题吗?任何帮助将非常感激。