2016-07-22 38 views
1

Ich versuche gerade, ein Spiel zu entwickeln, und der Dateipfad ändert sich, wenn ich es exportiere. HierDateipfad beim Exportieren ändern

ist der Code:

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); 
    } 
} 

Wenn ich führen Sie es durch Eclipse-(The IDE Ich verwende), es läuft gut und es zeigt das Bild. Wenn ich es als jar exportiere und es mit Jar2Exe Software in eine exe konvertiere, erscheint das Bild nicht und in der Konsole steht, dass der absolute Pfad für das Bild auf meinem Desktop ist. Aber wenn ich die exe mit 7-Zip öffne, ist das Bild in der exe.

Wie kann ich es exportieren, so dass, wenn der Benutzer es ausführt, das Programm den Dateipfad finden und das Bild anzeigen kann, anstatt zu denken, dass es auf meinem Desktop ist?

+0

Bezug genommen auf beide Antworten, aber weiter: Anwendungsressourcen werden zum Zeitpunkt der Bereitstellung zu eingebetteten Ressourcen, so dass es ratsam ist, auf sie zuzugreifen, als ob sie gerade jetzt wären. Auf ein [tag: embedded-resource] muss nicht die Datei, sondern die URL zugreifen. Siehe [Info. Seite für eingebettete Ressource] (http://stackoverflow.com/tags/embedded-resource/info) zum Erstellen der URL. –

Antwort

1

ich diese Hoffnung ist nicht ein Troll (lol)

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

Sie in einem Glas sind, gibt es keine Ressource Datei.


diesen Link Siehe auch: http://www.jar2exe.com/createdexe/integrate/protect

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

Ich habe versucht, stattdessen verwenden, würde immer noch nicht als eine exe zeigen. – joey942

+0

Versuchen Sie das vielleicht (http://www.jar2exe.com/createdexe/integrate/protect) Thread.currentThread(). GetContextClassLoader(). GetResource ("Hallo/Yes.gif"); – chikincrow

2

Wenn Sie es als ein Glas veröffentlichen möchten, dann müssen Sie für das Lesen von Dateien die Jar-spezifischen API verwenden. Siehe z. How to read a file from a jar file? (und Sie müssen Eclipse konfigurieren, um das Bild in das Jar zu legen, was so klingt, als würden Sie es bereits tun).

Auch Sie sollten uns wissen lassen, ob es funktioniert, wenn es in einem Glas ist, aber nicht als eine exe, die uns helfen wird einzuschränken, wo das Problem sein kann.

+0

Ein wenig neu in diesem ganzen Teil von Java, Dateien und so, könnten Sie mir vielleicht ein Beispiel geben? Die Antwort auf diesen Post, mit dem du mich verlinkt hast, war getResourceAsStream(), was nicht funktioniert hat. Es sei denn, ich nähere mich dem falschen ... – joey942

+0

Ich habe vielleicht nur einen blöden Moment, aber was meinst du, wenn du weißt, ob es funktioniert, wenn es in einem Glas ist? Meinst du es wie ein Glas ...? – joey942

+0

ja ich meine es als ein Glas laufen. So: java -jar myfile.jar – TubesHerder