2012-10-31 26 views
10

私はJava Webstartアプリケーションを開発中です。これは、JNLPファイルのresourcesセクションに含まれるJARファイルからリソースを収集することになっています。ウムラウトを含むファイル名でリソースJARをロードするには?

アプリケーション言語はドイツ語なので、JAR内のフォルダ/ファイルの一部が文字「A」、「O」、「U」または「ß」が含まれます。私は、このアプリケーションを起動すると、次の例外がスローされます。

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ファイルをインクルードします。この方法で、リソースセクションにリストされています。

答えて

2

私は今、この

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

ようJDKからJAR toolを使用し、それがうまく働きました。

生成されるJARファイルのエンコーディングがANSIのままであるため、なぜ動作するのか正確にはわかりません。

関連する問題