我想要一个项目在我的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)
我是否正确使用了这个?
答案 0 :(得分:1)
getResource
用于在当前Classpath的上下文中查找资源。通常,.
不是Classpath的一部分,这意味着类加载器不会尝试查看图形目录
getResource
将无法找到这些资源,除非.
是类路径的一部分。
getResource
将每个Classpath元素添加到路径前面,这意味着,除非.
是Classpath的一部分,getResource
将不起作用。在这种情况下,您应该尝试使用File
代替