我想要一个项目,在我的 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)
我使用得正确吗?
最佳答案
getResource
用于在当前类路径的上下文中查找资源。通常,.
不是类路径的一部分,这意味着类加载器不会尝试在图形目录中查找
getResource
将无法找到这些资源,除非 .
是类路径的一部分。
getResource
将为每个类路径元素添加前缀,这意味着,除非 .
是类路径的一部分,否则 getResource
将不起作用。在这种情况下,您应该尝试使用 File
代替
关于java - 在项目外部加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709749/