2012-04-06 8 views
2

私のprevious questionを参照すると、別の フォルダにあるファイルを同様の.jarに読み込むにはどうすればよいか質問したいと思います。スイングアプリケーションで.jarの下にあるファイルにアクセスしていますか?

この質問には、フォルダの階層と詳細が記載されています。 私の主な問題は、コードの行である:

JTextPane textPane = ... //general initialization 
textPane.setPage("path/file.html"); 

問題は、私は私の.jarでそのfile.htmlを維持する必要があります。

また、私はこのトピックに関する提案を知りたいと思います。

+0

[Java:jarに含まれるリソースをロードする]の複製が可能です(http://stackoverflow.com/questions/574809/java-load-a-resource-contained-in-a-jar) – jtahlborn

答えて

6

JARのリソースをロードする場合は、Class.getResource()を使用できます。ここでのパスが何らかのフォルダThisClass.classからである

textPane.setPage(ThisClass.class.getResource("relative/path/to/file.html")); 

であることが明示的にクラスに名前を付けるのではなくthis.getClass()を使用することが一般的に優れている、そのことがあります。これがないJARに通常のフォルダ構造からロードするときにも同様に適しています。このメソッドがサブクラスのために呼び出された場合は、別の(そして意図しない)場所を探します。

+0

'ClassName.class.getResource()'はここにありますか? – Asif

+0

おっと、私の悪い - はい、それは正しいでしょう。 –

+0

私は 'MyClass.class.getResource("/resources/files/help/file.html ");'を使用していますが、 'System.out.println()'で正しいパスを返しますが、 'textPane 'で' NullPointerException'を返します。 setPage() ' 。 。 ?? – Asif