有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何加载包含UMLAUT的文件名的资源JAR?

我正在开发一个JavaWebStart应用程序。这应该是从JNLP文件的resources部分中包含的JAR文件中收集资源

应用程序语言是德语,因此JAR中的一些文件夹/文件包含字符“ä”、“ö”、“ü”或“ß”。如果启动此应用程序,将引发以下异常:

java.lang.IllegalArgumentException: MALFORMED
at java.util.zip.ZipCoder.toString(Unknown Source)
at java.util.zip.ZipInputStream.readLOC(Unknown Source)
at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
at com.sun.deploy.net.HttpDownloadHelper.decompressWrite(Unknown Source)
at com.sun.deploy.net.HttpDownloadHelper.download(Unknown Source)
at com.sun.deploy.cache.Cache.downloadResourceToTempFile(Unknown Source)
at com.sun.deploy.cache.Cache.downloadResourceToCache(Unknown Source)
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
at com.sun.javaws.LaunchDownload$DownloadTask.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

如果我在记事本+++中打开JAR文件,则表示编码为ANSI。所以,我将它改为UTF-8,但它甚至不编译

我正在使用Netbeans 7.2。对于开发,我将JAR文件作为库包括在内,这样它就列在参考资料部分


共 (1) 个答案

  1. # 1 楼答案

    我现在像这样使用来自JDK的JAR tool

    jar cf <jar-file-name> <input-file(s)>
    

    而且效果很好

    我不太明白为什么它能工作,因为生成的JAR文件的编码仍然是ANSI