Я пытаюсь получить ресурс (image.png, в том же пакете, что и этот код) из статического метода, используя этот код:

import java.net.*;

public class StaticResource {

    public static void main(String[] args) {
        URL u = StaticResource.class.getClass().getResource("image.png");
        System.out.println(u);
    }

}

На выходе просто "ноль"

Я также пробовал StaticResource.class.getClass().getClassLoader().getResource("image.png"); , он выбрасывает NullPointerException

Я видел другие решения, в которых это работает, что я делаю не так?

8
Luke Moll 7 Май 2014 в 20:07

2 ответа

Лучший ответ

Удалите часть ".getClass ()". Просто используйте

URL u = StaticResource.class.getResource("image.png");
8
Ignacio A. Poletti 7 Май 2014 в 16:16

Всегда старайтесь размещать ресурсы за пределами кода JAVA, чтобы сделать его более управляемым и повторно используемым другим классом пакета.

Вы можете попробовать любой

// Read from same package 
URL url = StaticResource.class.getResource("c.png");

// Read from same package 
InputStream in = StaticResource.class.getResourceAsStream("c.png");

// Read from absolute path
File file = new File("E:/SOFTWARE/TrainPIS/res/drawable/c.png");

// Read from images folder parallel to src in your project
File file = new File("images/c.jpg");

// Read from src/images folder
URL url = StaticResource.class.getResource("/images/c.png")

// Read from src/images folder
InputStream in = StaticResource.class.getResourceAsStream("/images/c.png")
0
Braj 7 Май 2014 в 16:22