在项目之外加载图像

时间:2013-09-10 02:15:32

标签: java ioexception

我想要一个项目在我的jar文件旁边有一些文件夹:

+- MyProject.jar
+- graphics
    +- image1.jpg
    +- image2.jpg
    +- paper.jpg
+- plugins
    +- plugin1.jar
    +- plugin2.jar
    +- plugin3.jar

MyProject.jar内我有这一行:

URL loc = this.getClass().getResource("/../graphics/paper.jpg");

触发此错误:

Exception in thread "Timer-0" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(ImageIO.java:1388)
    at fotofilter.filters.Blueprint.getPaper(Blueprint.java:116)
    at fotofilter.filters.Blueprint.filter(Blueprint.java:45)
    at fotofilter.FotoFilter.blueprint(FotoFilter.java:103)
    at fotofilter.FotoFilter$1.run(FotoFilter.java:55)
    at java.util.TimerThread.mainLoop(Timer.java:555)
    at java.util.TimerThread.run(Timer.java:505)

我是否正确使用了这个?

1 个答案:

答案 0 :(得分:1)

getResource用于在当前Classpath的上下文中查找资源。通常,.不是Classpath的一部分,这意味着类加载器不会尝试查看图形目录

getResource将无法找到这些资源,除非.是类路径的一部分。

getResource将每个Classpath元素添加到路径前面,这意味着,除非.是Classpath的一部分,getResource将不起作用。在这种情况下,您应该尝试使用File代替