我正在开发Java Webstart应用程序。这应该从JNLP文件的资源部分中包含的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)
如果我在 notepad ++ 中打开JAR文件,则表示编码为ANSI。所以,我将它改为UTF-8,但它甚至没有编译。
我正在使用 Netbeans 7.2 。对于开发,我将JAR文件包含为库,这样它在资源部分中列出。
答案 0 :(得分:2)
我现在使用JDK中的JAR tool,如此
jar cf <jar-file-name> <input-file(s)>
它工作正常。
我不完全理解它为什么会起作用,因为生成的JAR文件的编码仍然是ANSI。