【问题标题】:Url loading error for image in runnable jar可运行 jar 中图像的 URL 加载错误
【发布时间】:2014-12-05 18:36:52
【问题描述】:

所以,当我尝试以下代码时:

//Main Class

package com.mgflow58.Main;

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class Game {

    public static void main(String[] args) {
        BufferedImage mainicon = null;
        JFrame window = new JFrame("Guppy's Adventure");
        window.add(new GamePanel());
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setResizable(false);
        window.pack();
        window.setLocationRelativeTo(null);
        window.setVisible(true);

        try {
            String mainurlstring = "icon.gif";
            URL mainurl = new URL(mainurlstring);
            try {
                mainicon = ImageIO.read(mainurl);
                window.setIconImage(new ImageIcon(mainicon).getImage());
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

我收到以下错误:

java.net.MalformedURLException: no protocol: icon.gif
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at java.net.URL.<init>(Unknown Source)
    at com.mgflow58.Main.Game.main(Game.java:28)

文件 icon.gif 位于根文件夹中,我什至尝试将其复制到执行代码的类所在的 src/com/mgflow58/Main 中。我做错了什么?无论我尝试哪种方法,我都无法设置图像图标,并且我已经尝试找到答案一段时间了。

【问题讨论】:

    标签: java url jframe icons


    【解决方案1】:

    我已经简化了上一个问题的答案。我在某个地方犯了一个愚蠢的错误,但现在我重新写了一行,问题就解决了。这就是我访问 icon.gif 的方式:

    //Main Class
    
    package com.mgflow58.Main;
    
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    
    public class Game {
    
        public static void main(String[] args) {
            BufferedImage mainicon = null;
            JFrame window = new JFrame("Guppy's Adventure");
            window.add(new GamePanel());
            window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            window.setResizable(false);
            window.pack();
            window.setLocationRelativeTo(null);
            window.setVisible(true);
    
            window.setIconImage(new ImageIcon(Game.class.getResource("/icon.gif")).getImage());
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      相关资源
      最近更新 更多