Проблема в том, что url
равно null
. Проверьте, как был реализован конструктор:
public ImageIcon (URL location) {
this(location, location.toExternalForm());
}
Если location
равно null
, location.toExternalForm()
выдаст NullPointerException
.
Фактически, если path
равно null
, это тоже может вызвать NullPointerException
. Посмотрите, как getResource
был реализован.
public URL getResource(String name) {
name = resolveName(name);
//...
}
private String resolveName(String name) {
if (!name.startsWith("/")) {
Class<?> c = this;
while (c.isArray()) {
c = c.getComponentType();
}
String baseName = c.getPackageName();
if (baseName != null && !baseName.isEmpty()) {
name = baseName.replace('.', '/') + "/" + name;
}
} else {
name = name.substring(1);
}
return name;
}
Как видите, если name
равно null
, name.startsWith("/")
выдаст NullPointerException
.
Сделайте это следующим образом:
public static ImageIcon createIcon (String path) {
if(path == null) {
System.err.println("Path is null");
return null;
}
URL url = System.class.getResource(path);
ImageIcon icon = null;
if(url != null) {
icon = new ImageIcon(url);
} else {
System.err.println("Unable to load image: " + path);
}
return icon;
}