2012-10-31 13 views
10

Sto lavorando su un'applicazione Java Webstart. Questo dovrebbe raccogliere risorse da un file JAR che è incluso nella sezione risorse nel file JNLP.Come caricare un JAR di risorse con nomi di file inclusi dieresi?

La lingua dell'applicazione è il tedesco, quindi alcune delle cartelle/file nel JAR includono i caratteri "ä", "ö", "ü" o "ß". Se inizio questa applicazione viene lanciata la seguente eccezione:

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) 

Se apro il file JAR in Notepad ++ è dice la codifica è ANSI. Quindi, lo cambio in UTF-8 ma poi non viene nemmeno compilato.

Sto usando Netbeans 7.2. Per lo sviluppo includo il file JAR come libreria e in questo modo è elencato nella sezione risorse.

risposta

2

ora usato il JAR tool dal JDK come questo

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

e ha funzionato bene.

Non capisco esattamente perché funzioni perché la codifica del file JAR che viene prodotto è ancora ANSI.