我试图使用此代码从静态方法获取资源(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);
}
}
输出只是' null'
我也试过StaticResource.class.getClass().getClassLoader().getResource("image.png");
,它抛出一个NullPointerException
我已经看到其他解决方案有效,我做错了什么?
答案 0 :(得分:5)
删除“.getClass()”部分。 只需使用
URL u = StaticResource.class.getResource("image.png");
答案 1 :(得分:0)
始终尝试将资源放在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")