内のリソースからロードされた表示CHMファイル私はリソースからロードされたヘルプを含むCHMファイルを表示しようとしています:プロジェクトはNetBeansのから実行された場合ジャワ、瓶
try
{
URL url = this.getClass().getResource("/resources/help.chm");
File file = new File(url.toURI());
Desktop.getDesktop().open(file); //Exception
}
catch (Exception e)
{
e.printStackTrace();
}
、ヘルプファイルが表示されます正しく 残念ながら、プログラムがjarファイルから実行されても動作しません。例外が発生します。
私の意見では、URIで記述されたjarファイルの内部構造は認識されていません...もっと良い方法はありますか?たとえば、BufferReaderクラスを使用しますか?
JPGファイルと類似した問題は、URIに変換せずにバッファ画像クラスBufferedImage img = null;
URL url = this.getClass().getResource("/resources/test.jpg");
if (url!= null)
{
img = ImageIO.read(url);
}
で固定されています
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
...あなたの助けを
おかげで...
.jarファイルは、異なる拡張子を持つzipファイルです。 .jarファイルのエントリ自体はファイルではなく、.jarリソースURLからFileオブジェクトを作成しようとすると*決して*動作しません。 [getResourceAsStream](http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getResourceAsStream-java.lang.String-)と[ストリームをコピーする](http:///docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#copy-java.io.InputStream-java.nio.file.Path-java.nio.file.CopyOption .. .-)を一時ファイルに追加します。 – VGR
@ VGR:あなたのコメントをありがとう。残念ながら、おそらくそれはできません。プログラムはJava Web Startアプリケーションとして実行されますが、いくつかの追加の権限が必要ですか?... – justik
Desktop.openを実行する権限をお持ちの場合は、[一時ファイルを作成する]( http://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#createTempFile-java.lang.String-java.lang.String-java.nio.file.attribute。 FileAttribute ...-)。 – VGR