2016-12-02 8 views
0

javaFXは、常に必要なfxmlファイルなしで使用します。私はIDEで私のアプリを実行すると、完全に動作します。 jarファイルを作成した場合にのみ、動作しません。どんな助け?アプリケーション起動メソッドでjava.lang.runtimeexception例外が発生しました

error : no such file in res\img\menu_bg.png 

このファイルは全体のコードのように同じフォルダ内にある

コード

public class InputStreamClass { 
    private ImageView imgViewBG; 
    public InputStreamClass() throws Exception { 
     InputStream isBG = Files.newInputStream(Paths.get("res/img/menu_bg.png")); // res/img/menu_bg.png 
     Image imgBG = new Image(isBG); 
     isBG.close(); // kedze je to InputStream a pracujeme zo suborom tak vzdy ho treba zatvarat 
     this.imgViewBG = new ImageView(imgBG); // pridame img do ImageView 
     this.imgViewBG.setFitWidth(1600); // sirka obrasku 
     this.imgViewBG.setFitHeight(900); // vyska obrasku 
    } 
    public ImageView getImageViewBG() { 
     return this.imgViewBG; 
    } 
} 

enter image description here

+0

A)スタックトレースは**テキスト**です。だから** text **のようにそれを持ち込み、不可能に近づくことは不可能な、上級者向けのスクリーンショットではない。 B)JARファイルに実際に使用するリソースが含まれていることを確認しましたか? – GhostCat

+0

あなたの** res **フォルダはここにありません。[link](http://stackoverflow.com/questions/18091046/creating-runnable-jar-with-external-files-included) –

+0

@ghostCatちょうどそれをポップアップして、それをズームすることができます:) と私は含まれてpackgaesもリソースを含む必要がありますか?それはパッケージとautomaticalyを含むdouesnt? –

答えて

1

この試してみてください。別のフォルダ名の解像度を入れて、あなたのjarファイルと同じフォルダにします。 resフォルダ内にフォルダ名imgを作成します。 imgフォルダの中に上記の名前であなたの実際のイメージを置きます。

4

イメージファイルに書き込む必要はないと仮定します。

この場合、イメージはjar自体に含まれるほうがよいでしょう。これにより、パスに関する問題が回避されます。 Javaは、作業ディレクトリに関連する相対パスを解決しようとします。これは、コードフォルダではないことがよくあります。

jarファイル自体に画像を追加すると、Classインスタンスを使用してリソースを取得できます。

// InputStream isBG = getClass().getResourceAsStream("/res/img/menu_bg.png"); 
// Image imgBG = new Image(isBG); 

Image imgBG = new Image(getClass().getResource("/res/img/menu_bg.png").toExternalForm()); 

作業ディレクトリとは独立して動作します。

これは、ファイルが/res/img/menu_bg.pngのエントリとしてjarファイルに格納されていることを前提としています。

関連する問題