java - 在项目外部加载图像

标签 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)

我使用得正确吗?

最佳答案

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

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

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

关于java - 在项目外部加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709749/

相关文章:

整个列表上的 Java 8 流计算

unit-testing - NUnit [TearDown] 失败——哪个进程正在访问我的文件?

java - 为什么我的switch语句生成IOException

java - Kafka - 在 Windows IOException 上创建生产者

java - servlet 过滤器不起作用

java - 使用 XA 事务时通过 Spring Integration 和 WebSphere 有效利用消费者

java - 如何使包含 FlowLayout 的 JPanel 居中?

java - 执行者服务中的执行者服务?

Java UrlConnection 在高负载下触发 "Connection reset"异常。为什么?

connection - Apache 米娜 java.io.IOException : Connection reset by peer