【问题标题】:Jar file does not (Image loading related issue)Jar 文件没有(图像加载相关问题)
【发布时间】:2013-09-23 16:05:52
【问题描述】:

我正在为一个学校项目制作加载屏幕。在 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));
}

【问题讨论】:

  • 使用java -jar yourApp.jar从命令行启动jar,看看是否有任何异常被触发。如果您看到异常,请将它们粘贴到此处
  • 尝试不使用“../”并确保您的图像存在于您的 jar 目录资源中。
  • 谢谢。通过从背景图像路径中删除“..”解决了问题。 LoadingScreen.class.getResource("/resources/linen.png"));

标签: java image netbeans jar


【解决方案1】:

根据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 位于类路径的根目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多