2012-10-31 9 views
10

Ich arbeite an einer Java Webstart-Anwendung. Dies soll Ressourcen aus einer JAR-Datei sammeln, die im Ressourcenabschnitt in der JNLP-Datei enthalten ist. Die Anwendungssprache ist Deutsch, daher enthalten einige der Ordner/Dateien im JAR die Zeichen 'ä', 'ö', 'ü' oder 'ß'. Wenn ich diese Anwendung die folgende Ausnahme beginnen geworfen:Wie lade ich eine Ressourcen-JAR mit Dateinamen inklusive Umlaute?

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) 

Wenn ich die JAR-Datei in Notepad öffnen ++ ist, sagt die Codierung ANSI ist. Also, ich ändere es in UTF-8, aber dann kompiliert es nicht.

Ich verwende Netbeans 7.2. Für die Entwicklung schließe ich die JAR-Datei als Bibliothek ein und auf diese Weise wird sie im Ressourcen-Abschnitt aufgelistet.

Antwort

2

habe ich jetzt die JAR tool aus dem JDK wie diese

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

und es funktionierte gut.

Ich verstehe nicht genau, warum es funktioniert, weil die Codierung der JAR-Datei, die produziert wird, immer noch ANSI ist.

Verwandte Themen