Java ImageIcon.GetImage挂起

Dom*_*les 0 java swing image awt

我在使用ImageIcon()时遇到问题.GetImage()

奇怪的是,它有时会起作用,并向我显示带有地图的窗口,有时则不会.它也可以在其他计算机上完美运行但不在我的计算机上!

我已经尝试了一切,重新安装Java,重新安装IntelliJ,也禁用我的防火墙,但无济于事.我还在C#中编写了一个类似的程序,它运行得很好,这使我相信它不是权限错误.我还在一个基本的Windows XP系统上测试了它,它带有一个板载显卡,也很完美.

这是我的代码:

public class main {

public static void main(String[] args) {
    System.out.println("Running main..");
    try
    {
        URL url = new URL("http://maps.googleapis.com/maps/api/staticmap?center=-33.80382155278416,18.567184266922002&zoom=17&size=1024x1024&maptype=hybrid&sensor=false&format=png&key=AIzaSyCVnp9iTXRSS3ZE5FjzF7uNZavazWhLko4");
        Image img=new ImageIcon(url).getImage();
        System.out.println("INFO :"+img);
        new ImageFrame(img);

    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

public static class ImageFrame extends JFrame{

    public ImageFrame(Image img){

        setPreferredSize(new Dimension(540, 480));
        setaImg(img);
        ImagePanel somePanel = new ImagePanel(540, 480);
        add(somePanel);
        setVisible(true);
    }

    private Image aImg;

    public Image getaImg() {
        return aImg;
    }

    public void setaImg(Image aImg) {
        this.aImg = aImg;
    }

    public class ImagePanel extends JPanel{

        public ImagePanel(int width, int height){
            setPreferredSize(new Dimension(width, height));
        }

        @Override
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(getaImg(), 0, 0, null); // see javadoc for more info on the parameters
        }
    }



}

 }
Run Code Online (Sandbox Code Playgroud)

我通过调试器的步骤运行它,它停在这一行:

Image img=new ImageIcon(url).getImage();
Run Code Online (Sandbox Code Playgroud)

但没有错误,它只会永远挂起.

我完全困惑为什么它不能在我的系统上工作,只有我的系统.任何帮助将不胜感激.

Mad*_*mer 6

对我来说很好

在此输入图像描述

Google不会阻止你吗?从记忆中,你每天有10,000次查询或类似的东西.

尝试使用InputStream(URL.openStream())手动下载URL ,看看你是否得到了除图像二进制之外的某种响应.

更新

经过调查,发现Java 7和IPv6存在问题,如此处所述使用Java随机冻结下载文件