软件包的相对路径从哪里开始?

时间:2019-02-02 23:34:57

标签: java relative-path

在使用getResourceAsStream加载图像的漫长而艰巨的任务之后,我决定将所有源代码组织到src文件夹中的包中。

从那时起,我原来的检索文件方法不再起作用。

这是我开设的原始班级:

package main;

import java.awt.image.BufferedImage;

import java.io.IOException;

import javax.imageio.ImageIO;

public class ResourceLoader {

    public static BufferedImage getImage(String uri) throws IOException {
        BufferedImage image = null; 

        image = ImageIO.read(ResourceLoader.class.getResource(uri));

        return image;

    }

}

如前所述,输入路径时可以100%罚款:

"imgs/anims/testimage.png"

与此完美配合。 imgs是源文件夹res中的一个文件夹。

1 个答案:

答案 0 :(得分:0)

我们发现了您的问题:

您曾经将所有图像相对加载到位于根包中的ResourceLoader(已损坏!并且您重构了它)。

但是现在(您将ResourceLoader/移到了/main,并且您的所有URI都指向了“必杀技”,因为相对于{ {1}}。


解决方案:

  1. 根据ResourceLoader将imgs/...重构为/main

    /imgs移至/main/imgs。 (如果{肯定是imgs不在那,请创建它,此解决方案不需要代码/ uri调整。)

  2. 或者使用绝对寻址

    将(全部个)图像称为main/imgs(带有斜杠字符(main))。

  3. 将ResourceLoader重构为/。

    也不需要进一步的代码/ uri调整。