2016-07-22 3 views
1

現在、ゲームを開発しようとしています。エクスポートするときにファイルパスが変更されています。エクスポート時にファイルパスを変更する

package random; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.File; 

import javax.imageio.ImageIO; 
import javax.swing.JFrame; 

public class Troll extends JFrame{ 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 4176461585360667597L; 
    public static BufferedImage img; 
    public static void main(String[] args){ 
     File f = new File("troll.png"); 
     try{ 
      if(f.exists()){ 
       System.out.println("ITS THERE! :D"); 
        img = ImageIO.read(f); 
      } else { 
       System.out.println("DOESNT EXIST, REAL PATH IS: " + f.getAbsolutePath()); 
      } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

     new Troll(); 

    } 
    public Troll(){ 
     init(); 
    } 
    public void init(){ 
     setSize(1200,800); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setLocationRelativeTo(null); 
    } 
    public void paint(Graphics g){ 
     g.drawImage(img, 500, 350, this); 
    } 
} 

私は、Eclipse(私が使用しているIDE)を介して、それを実行すると、それがうまく実行していると、それは、画像を見せている。ここで

はコードです。 jar2Exeソフトウェアを使用してjarファイルとしてエクスポートし、exeファイルに変換すると、イメージは表示されず、コンソールにはイメージの絶対パスがデスクトップ上に表示されます。しかし、7-Zipを使ってexeを開くと、その画像はexeにあります。

私はデスクトップ上にあると思っているのではなく、ユーザーがそれを実行すると、プログラムがファイルパスを見つけてイメージを表示できるように、どのようにエクスポートできますか?私はこのことを願っています

+0

両方の答えが示唆されていますが、アプリケーションリソースはデプロイ時に埋め込まれたリソースになりますので、今のようにアクセスすることをお勧めします。 [タグ:埋め込みリソース]は、ファイルではなくURLでアクセスする必要があります。 [info。埋め込みリソースのページ](http://stackoverflow.com/tags/embedded-resource/info)を参照してください。 –

答えて

1

あなたはjarファイルにあるトロール(笑)

img = ImageIO.read(this.getClass().getResource("/troll.jpg")); 

ないが、何のリソースファイルはありません。


同様にそのリンクを参照してください:http://www.jar2exe.com/createdexe/integrate/protect

Thread.currentThread().getContextClassLoader().getResource("hello/yes.gif"); 
+0

私はそれを代わりに使ってみましたが、まだexeとして表示されませんでした。 – joey942

+0

多分(http://www.jar2exe.com/createdexe/integrate/protect)Thread.currentThread()。getContextClassLoader()。getResource( "hello/yes.gif"); – chikincrow

2

あなたはjarファイルとして公開したい場合は、あなたがあなたのファイルを読み取るためのジャー固有のAPIを使用する必要があります。たとえばを参照してください。 How to read a file from a jar file?(また、あなたがすでにやっているように、画像をjarに入れるようにEclipseを設定する必要があります)。

また、jarファイルではなくexeファイルであるかどうかを教えてください。問題が発生している場所を絞り込むのに役立ちます。

+0

Java、ファイルなどのこの部分全体に少し新しいので、私に例を教えてもらえますか?あなたがリンクしたその投稿への答えは、動作しなかったgetResourceAsStream()を使うことでした。私がこの間違いに近づいていない限り... – joey942

+0

私はちょうど愚かな瞬間を持っているかもしれませんが、それが瓶の中で動作するかどうかをあなたに知らせるのはどういう意味ですか?あなたはそれを瓶のように動かすことを意味しますか? – joey942

+0

はい、私は瓶のように実行することを意味します。このように:java -jar myfile.jar – TubesHerder

関連する問題