Java 尝试打开jar文件时出现ZipException

Java 尝试打开jar文件时出现ZipException,java,jar,Java,Jar,当我试图打开一个jar文件时,我总是得到一个java.util.zip.ZipException。我能够用以下精简的代码重现这个问题(忽略奇怪的populateSamples()method name): 以下是我得到的一个例外: $ java -jar EclipseTest.jar java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java

当我试图打开一个jar文件时,我总是得到一个
java.util.zip.ZipException
。我能够用以下精简的代码重现这个问题(忽略奇怪的
populateSamples()
method name):

以下是我得到的一个例外:

$ java -jar EclipseTest.jar
java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:128)
at java.util.jar.JarFile.<init>(JarFile.java:136)
at java.util.jar.JarFile.<init>(JarFile.java:73)
at Test.populateSamples(Test.java:40)
at Test.main(Test.java:17)
java.lang.NullPointerException
at Test.populateSamples(Test.java:54)
at Test.main(Test.java:17)
$java-jar EclipseTest.jar
java.util.zip.ZipException:打开zip文件时出错
位于java.util.zip.ZipFile.open(本机方法)
位于java.util.zip.ZipFile。(ZipFile.java:128)
位于java.util.jar.JarFile。(JarFile.java:136)
位于java.util.jar.JarFile。(JarFile.java:73)
在Test.populateSamples(Test.java:40)
at Test.main(Test.java:17)
java.lang.NullPointerException
在Test.populateSamples(Test.java:54)
at Test.main(Test.java:17)

我可以用
jartf
列出jar文件的内容。有什么想法吗?

我找到了这个问题的解决办法。
replaceAll((!\124;文件:\\\\),“”)位未按预期工作,因为未替换“文件:”位。我现在将着手寻找原因,并完成这个答案

您确定
s
不为空吗?设置
s
的表达式有很大的范围可以在其中的某个地方获取空值…谢谢。它不是null,但是传递给
replaceAll()
方法的构造有错误,因此字符串仍然以“file:”开头。
$ java -jar EclipseTest.jar
java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:128)
at java.util.jar.JarFile.<init>(JarFile.java:136)
at java.util.jar.JarFile.<init>(JarFile.java:73)
at Test.populateSamples(Test.java:40)
at Test.main(Test.java:17)
java.lang.NullPointerException
at Test.populateSamples(Test.java:54)
at Test.main(Test.java:17)