导出时更改文件路径



我目前正在尝试开发一款游戏,导出时文件路径正在更改。

这是代码:

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)运行它时,它运行得很好,并且显示了图像。当我将其导出为jar并使用Jar2Exe软件将其转换为exe时,图像不会出现,并且在控制台中显示图像的绝对路径在我的桌面上。但是当我使用7-Zip打开exe时,图片就在exe中。

我如何导出它,以便当用户运行它时,程序可以找到文件路径并显示图像,而不是认为它在我的桌面上?

如果您想将其发布为jar,那么您需要使用特定于jar的API来读取您的文件。参见例如如何从jar文件中读取文件?(您需要配置Eclipse以将图片放入jar中,这听起来就像您已经在做了)。

此外,您应该让我们知道它在jar中时是否有效,而不是作为exe,这将帮助我们缩小问题的范围。

我希望这不是一个巨魔(lol)

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

你在一个罐子里,没有资源文件


请同时查看该链接:http://www.jar2exe.com/createdexe/integrate/protect

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

最新更新