2016-07-18 7 views
1

JavaFx GUIを持つプロジェクトの実行可能なjarファイルを生成しようとしています。 プロジェクトは、Eclipseのgreateの実行されますがwhenIはjarファイルを実行しよう:JavaFxイメージがJarファイルに見つかりません

Exception in thread "main" java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    ...Caused by: java.lang.NullPointerException: Input stream must not be null 

画像のコードは次のようになります。私は私は私のjarファイルを実行できるように変更する必要が何

private Image image1 = new Image(this.getClass().getResourceAsStream("../pic/classic/image1.png")); 

ファイルも例外ではありません。

ありがとうございました。

+1

文字列に '..'を使用しないでください。 'SomeClassInParentPackage.class.getResourceAsStream(" pic/classic/image1.png ")'それ以外の場合は、ルート相対リソースを持つリソースを参照するだけで、親パッケージにクラスがある場合は、リソースの参照として使用します。パス: '' /com/example/app/pic/classic/image1.png "' – VGR

+0

http://stackoverflow.com/a/16122215/5969411 – ManoDestra

+1

*編集:最初の質問のお手伝いをありがとうございます。 別のどのように私は... "*いいえ、質問にあなたの答えを得た。質問を編集して質問を追加しないでください。私はこの理由で編集をロールバックしました。あなたはここでもあなたのコンテンツを見つけることができます:http://stackoverflow.com/posts/38444852/revisions。新しい質問をしてください。また、答えがあなたのために働く場合、それを受け入れることを検討してください。 – fabian

答えて

5

..は、jarファイル内でリソース名を指定するときには無効です。 documentation on resource namingによると、リソースパスの各コンポーネントは、有効なJava識別子である必要があります。..はありません。

これを修正するには、クラスパスに関連した絶対リソース名を指定します。したがって、あなたが入っているクラスがcom.mycompany.myapplication.viewというパッケージに入っている場合は、

private Image image1 = 
    new Image(this.getClass().getResourceAsStream("/com/mycompany/myapplication/pic/classic/image1.png")); 
関連する問題