java - 导出时更改文件路径

标签 java swing jar exe embedded-resource

我目前正在尝试开发游戏,导出时文件路径发生变化。

代码如下:

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 来读取您的文件。见例如。 How to read a file from a jar file? (并且您需要配置 Eclipse 以将图片放入 jar 中,听起来您已经在这样做了)。

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

关于java - 导出时更改文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38536081/

相关文章:

java - 接口(interface)是否被视为实现它的类的父级?

java - 为什么我的项目没有出现在 JFrame 中?

java - 使用 Java 获取 ZIP 文件中目录的内容

java - 如何预加载整个jar文件

java - 带有泛型的 Java 中的可选参数化

java - C程序在哪个线程中执行?

java - Guice:将 Class<?> 绑定(bind)到 Class<?>

java - JProgressBar 未更新

java - 在 Canvas 内画线

java - jar 文件中的源可见