从其他包中的类加载包内的 Java 映像

2022-09-03 05:16:21

我有一个名为MyProject的Java项目。我有几个不同的包(为了这个问题的目的,保持名称简单),如下所示:

src/PackageA
src/PackageA/PackageAa
src/PackageA/PackageAa/PackageAaa
src/PackageB
src/PackageB/PackageBa
src/PackageB/PackageBa/PackageBaa

我有一个班级

src/PackageA/PackageAa/PackageAaa/MyJavaFile.java

我有一张图片

src/PackageB/PackageBa/PackageBaa/MyImage.png

在 里面,我想声明一个图像对象MyJavaFile.javaMyImage.png

Image img = new Image(....what goes here?...)

我该怎么做?


答案 1

您可以调用并指定一个以 开头的路径,或者不打扰 :Class.getResource/ClassLoader.getResource/

URL resource = MyJavaFile.class
      .getResource("/PackageB/PackageBa/PackageBaa/MyImage.png");

艺术

URL resource = MyJavaFile.class.getClassLoader()
      .getResource("PackageB/PackageBa/PackageBaa/MyImage.png");

基本上将允许您指定相对于类的资源,但我认为它不允许您使用“..”等进行目录导航。Class.getResource

当然,如果您知道正确软件包中的类,则可以使用:

URL resource = SomeClassInPackageBaa.class.getResource("MyImage.png");

(我假设您可以将 a 传递给有问题的构造函数。在 两者和 .) 上也有。URLImagegetResourceAsStreamClassClassLoader


答案 2

您可以使用相对路径,因为相对路径是项目文件夹。

 ImageIcon img = new ImageIcon("src/PackageB/PackageBa/PackageBaa/MyImage.png");

推荐