从不同包中的类加载包内的Java Image [英] Load Java Image inside package from a class in a different package
问题描述
我有一个名为MyProject的Java项目。我有一些不同的包(为了这个问题保持名称简单),如下所示:
I have a Java project called MyProject. I have a few different packages (keeping names simple for the purpose of this question), as follows:
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.java
内,我想声明一个 MyImage.png的图像对象
Image img = new Image(....what goes here?...)
我该怎么做?
推荐答案
您可以调用 Class.getResource
并指定以 /
开头的路径,或者 ClassLoader.getResource方法
而不是打扰 /
:
You could either call Class.getResource
and specify a path starting with /
, or ClassLoader.getResource
and not bother with the /
:
URL resource = MyJavaFile.class
.getResource("/PackageB/PackageBa/PackageBaa/MyImage.png");
或:
URL resource = MyJavaFile.class.getClassLoader()
.getResource("PackageB/PackageBa/PackageBaa/MyImage.png");
基本上 Class.getResource
将允许你指定相对于该类的资源,但我不认为它允许您使用..等进行目录导航。
Basically Class.getResource
will allow you to specify a resource relative to the class, but I don't think it allows you to use ".." etc for directory navigation.
当然,如果你知道正确包中的类,你可以使用:
Of course, if you know of a class in the right package, you can just use:
URL resource = SomeClassInPackageBaa.class.getResource("MyImage.png");
(我假设您可以传递 URL
到有问题的 Image
构造函数。 Class $上还有
getResourceAsStream
c $ c>和 ClassLoader
。)
(I'm assuming you can pass a URL
to the Image
constructor in question. There's also getResourceAsStream
on both Class
and ClassLoader
.)
这篇关于从不同包中的类加载包内的Java Image的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!