- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我从事 Java 编程已有大约 15 年了。虽然这是一个基本问题,但这并不是因为故意无视 Java API 或阅读文档。坦率地说,我真的很震惊,我遇到了一种情况,我无法使用命令行工具创建一个简单的 jar 文件并使用 java.util.jar.*
API 打开它。我的详分割步过程如下。
我使用 jar -cf
创建一个简单的 .jar
文件进行测试。它包含一个文本文件。以下是我的 shell 的输出,显示了我如何在 Maven 项目的 src/test/resources
目录中创建它:
Laird-Nelsons-MacBook-Pro:resources ljnelson$ cat > a.txt
Hello!
Laird-Nelsons-MacBook-Pro:resources ljnelson$ jar cf source.jar .
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
Laird-Nelsons-MacBook-Pro:resources ljnelson$ ls -al
total 16
drwxr-xr-x 4 ljnelson staff 136 Dec 28 13:21 .
drwxr-xr-x 4 ljnelson staff 136 Dec 28 13:01 ..
-rw-r--r-- 1 ljnelson staff 7 Dec 28 13:21 a.txt
-rw-r--r-- 1 ljnelson staff 445 Dec 28 13:21 source.jar
Laird-Nelsons-MacBook-Pro:resources ljnelson$ jar tf source.jar
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
META-INF/
META-INF/MANIFEST.MF
a.txt
(拾取_JAVA_OPTIONS:-Dfile.encoding=UTF-8
是为了解决Mac错误,终端上的默认文件编码为MacRoman
。如果您想在屏幕上看到准确表示的Unicode字符,您需要手动将文件编码设置为UTF-8
。据我所知,这与我遇到的问题无关。)
然后,当创建 JarFile
时,以下测试用例代码将失败:
public File getSourceJarFile() throws IOException, URISyntaxException {
final URL url = this.getClass().getResource("/source.jar");
assertNotNull(url);
final URI uri = url.toURI();
assertNotNull(uri);
final String path = uri.getPath();
assertNotNull(path);
return new File(path);
}
@Test
public void testWTF() throws IOException, URISyntaxException {
final File file = this.getSourceJarFile();
assertNotNull(file);
assertTrue(file.isFile());
assertTrue(file.canRead());
// At this point, the file itself is there and can be read by this user.
JarFile jarFile = null;
try {
jarFile = new JarFile(file); // XXX KABOOM
} finally {
if (jarFile != null) {
jarFile.close();
}
}
}
异常(exception)情况是:
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:127)
at java.util.jar.JarFile.<init>(JarFile.java:135)
at java.util.jar.JarFile.<init>(JarFile.java:99)
at com.foobar.TestCaseJarFileWTF.testWTF(TestCaseJarFileWTF.java:72)
回顾一下:
jar
命令行工具的最简单调用在测试用例可访问的位置创建了一个 source.jar
文件。emacs
中使用 jar -xf
和 unzip
成功打开此文件。这是一个有效的 jar 和 zip 文件。我觉得承认这一点很愚蠢,但我想我对 JarFile
构造函数如何工作连最基本的理解都没有。非常感谢这里的任何意见。
最佳答案
Maven再次出击。我为 Maven filtering 设置了测试资源区域所以生成的 zip 文件的内部结构很可能是困惑的。我希望我在这里的失败可以帮助其他人解决类似的问题。
关于java - 如何打开 Jar 文件进行读取而不遇到 ZipException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8659907/
我只想提取一个普通的 zip 文件,但它总是失败。这是我现在使用的代码: private File downloadPath = new File(Environment.getExternalSto
我正在使用Firebase和API.AI开发Android聊天机器人应用程序。 将firebase UI库添加到项目后,我得到了 java.util.zip.ZipException:重复条目运行时异
我正在更新版本 3.4 的 Android studio 和插件(版本 5.1.1 的 gradle)当我尝试构建项目时,出现错误 java.util.zip.ZipException: zip fi
我遇到以下异常 java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Nati
我正在尝试将 zip 文件下载到 SD 卡。我正确下载了它,但是当我打开下载的文件(使用 ZipFile)时,我得到了这个 ZipException(“找不到中央目录条目”)。 Internet 文件
从今天早上开始(我更新了一些插件,并更新了 mac os X),每当系统想要读取 jar/zip 文件时,我都会收到 ZipException。起初我以为这是新版本插件中的一个错误,但它似乎是相当低级
这个问题在这里已经有了答案: Invalid Entry Compressed Size (2 个答案) 关闭 9 年前。 我正在尝试创建一种方法,只需一个步骤即可将多个 zip 存档相互融合。该代
我使用 Tomcat 8 和此类 Jersey 的动态 Web 项目依赖项。 com.sun.jersey jersey-client
我正在尝试将MoPub集成到我的应用程序中。 我将SDK导入了我的应用程序: compile('com.mopub.sdk.android:mopub:4.4.1@aar') { transi
Server: jboss-5.1.0 Java Version: jdk1.6.0_14 Deployment Method: ant v1.7 Error: 08:40:04,260 WARN [
我从事 Java 编程已有大约 15 年了。虽然这是一个基本问题,但这并不是因为故意无视 Java API 或阅读文档。坦率地说,我真的很震惊,我遇到了一种情况,我无法使用命令行工具创建一个简单的 j
我正在构建一个项目,其中有两个类(A 和 B)都继承自 BaseClass。 A 和 B 两个类都有 @Parceler 注释。当我为操作系统版本 4.1.2 (API 16) 的手机构建它时,它给了
我正在尝试使用以下命令更新现有 jar(在此示例中为 antlr)中的文件: jar -uf antlrworks-1.2.3.jar org/antlr/codegen/templates/Java
我一直在尝试让 ant 执行一些用 junit 编写的测试,但没有成功。任何建议将不胜感激。我对 ant 和 Java 都很陌生,所以请耐心等待。 作为快速总结,我正在做的是尝试让 ant 执行一个非
我正在将应用程序从 2.3 升级到 Nougat (SDK 25)。当我添加 com.android.support:appcompat-v7:25.0.0 以支持 ActivityCompat.re
这个问题在这里已经有了答案: How to resolve java.util.zip.ZipException? (11 个答案) 关闭 7 年前。 我正在尝试使用新的 multidex 选项,但
我对使用 Java 处理 zip 文件完全陌生,我遇到了一个奇怪的情况。 这是我用来解压的方法: public void unzip(File zipFile, File rootDir) throw
我在我的 Android 应用程序中使用 EBS 支付网关。 EBS 在其文件夹中包含 volley 库。我还为我的项目使用了 volley 库。所以我得到了这样的异常。 Execution fail
本文整理了Java中java.util.zip.ZipException.getLocalizedMessage()方法的一些代码示例,展示了ZipException.getLocalizedMess
本文整理了Java中java.util.zip.ZipException.()方法的一些代码示例,展示了ZipException.()的具体用法。这些代码示例主要来源于Github/Stackover
我是一名优秀的程序员,十分优秀!