2017-03-20 1 views
0

Bild, https://spooker.cc/spooker3.pngBufferedImage/ImageIcon Null-Zeiger Ausnahme

Code:

private JLabel getSpookerImage() { 
    URL url; 
    try { 
     url = new URL("http://spooker.cc/spooker3.png"); 
     BufferedImage image = ImageIO.read(url); 
     ImageIcon icon = new ImageIcon(image); 
     return new JLabel(icon, JLabel.CENTER); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

Ausnahme:

java.lang.NullPointerException 
at javax.swing.ImageIcon.<init>(ImageIcon.java:240) 
at cc.spooker.ui.tabs.MainTab.getSpookerImage(MainTab.java:63) 
at cc.spooker.ui.tabs.MainTab.getDestructPanel(MainTab.java:53) 
at cc.spooker.ui.tabs.MainTab.<init>(MainTab.java:35) 
at cc.spooker.ui.Frame.<init>(Frame.java:35) 
at cc.spooker.Server.<init>(Server.java:21) 
at cc.spooker.Main.main(Main.java:8) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 

Vielleicht, weil das Bild einen leeren Hintergrund hat? Keine Ahnung, keine Hilfe?

+0

Welche Zeile erzeugt die 'Exception'? –

+0

Er hat den Stack-Trace gepostet. –

+0

@AlexR Ich weiß, ich frage, welche Linie 63 ist –

Antwort

1

Die Methode ImageIO.Read() sucht nach einem Bildleseprogramm, das für Ihr Bild verwendet werden kann. Es kann jedoch kein Bildreader finden. Daher wird null zurückgegeben. die read() Methode akzeptiert ein PNG, also meine Vermutung ist, dass Ihr Bild keine gültige PNG-Datei ist. Versuchen Sie, es erneut als PNG oder wie Sie es erstellt haben, zu exportieren, um sicherzustellen, dass es in keiner Weise fehlerhaft ist. Getestet habe ich einen ähnlichen Code mit der PNG-Datei hier:

http://mrose.org/cc/png-test.png

Und es funktioniert gut.