1

我想要一个项目,在我的 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)

我使用得当吗?

4

1 回答 1

1

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

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

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

于 2013-09-10T02:20:31.717 回答