导出时更改文件路径
File Path Changing on Export
我目前正在尝试开发游戏,导出时文件路径发生变化。
代码如下:
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 中。
我如何导出它以便当用户 运行 时,程序可以找到文件路径并显示图像,而不是认为它在我的桌面上?
希望这不是喷子(笑)
img = ImageIO.read(this.getClass().getResource("/troll.jpg"));
你在一个jar中,没有资源file.
也看到 link:http://www.jar2exe.com/createdexe/integrate/protect
Thread.currentThread().getContextClassLoader().getResource("hello/yes.gif");
如果您想将其发布为 jar,则需要使用特定于 Jar 的 API 来读取您的文件。见例如。 How to read a file from a jar file?(并且您需要配置 Eclipse 以将图片放入 jar 中,听起来您已经在这样做了)。
此外,您应该让我们知道它在 jar 中而不是作为 exe 时是否有效,这将帮助我们缩小问题的范围。
我目前正在尝试开发游戏,导出时文件路径发生变化。
代码如下:
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 中。
我如何导出它以便当用户 运行 时,程序可以找到文件路径并显示图像,而不是认为它在我的桌面上?
希望这不是喷子(笑)
img = ImageIO.read(this.getClass().getResource("/troll.jpg"));
你在一个jar中,没有资源file.
也看到 link:http://www.jar2exe.com/createdexe/integrate/protect
Thread.currentThread().getContextClassLoader().getResource("hello/yes.gif");
如果您想将其发布为 jar,则需要使用特定于 Jar 的 API 来读取您的文件。见例如。 How to read a file from a jar file?(并且您需要配置 Eclipse 以将图片放入 jar 中,听起来您已经在这样做了)。
此外,您应该让我们知道它在 jar 中而不是作为 exe 时是否有效,这将帮助我们缩小问题的范围。