1

我正在为一个学校项目制作加载屏幕。在 Netbeans 中,代码运行良好,但是当我创建可执行 jar 时,.jar 文件不会执行。

我认为这个问题与背景图像加载有关,因为当我从我的项目中删除这段代码时。.jar 执行,但是当我添加它以加载背景图像时,.jar 文件不执行。任何帮助将不胜感激。

private void loadBackground(){
     try {
        backgroundImage = ImageIO.read(
               LoadingScreen.class.getResource("../resources/linen.png"));
    } catch (IOException ex) {
        Logger.getLogger(LoadingScreen.class.getName()).log(Level.SEVERE, null, ex);
    }
   Background.setIcon(new ImageIcon(backgroundImage));
}
4

1 回答 1

3

根据Class#getResource(String)

在委托之前,使用以下算法从给定的资源名称构造一个绝对资源名称:

如果名称以“/”开头(“\u002f”),则资源的绝对名称是名称中“/”后面的部分。

否则,绝对名称采用以下形式: modified_pa​​ckage_name/name 其中 modified_pa​​ckage_name 是此对象的包名称,用 '/' 代替 '.' ('\u002e')。

../没有意义,因为它会解析为资源名称

com/yourclasspackage/../resources/linen.png

我建议您始终在资源路径中使用绝对路径,即。/以.开头的路径 在你的情况下,

LoadingScreen.class.getResource("/resources/linen.png"));

假设/resources/linen.png位于类路径的根目录。

于 2013-09-18T18:53:30.053 回答