java - 无法从包中加载图像

标签 java image maven resources package

我的问题是我无法使用 maven 从我的 java 项目中的子包加载图像。

This is my project structure

我尝试了一些不同的代码片段,但总是遇到空指针异常。

我尝试过:

Image image = new Image("/frontend/pictures/logo.png");
Image image = new Image("frontend/pictures/logo.png");
Image image = new Image("pictures/logo.png");
Image image = new Image(getClass().getResource("frontend/pictures/logo.png").toString());

在另一个项目中,它对我来说工作得很好,但现在我不知道我做错了什么。

感谢您的帮助。

最佳答案

这是我使用 ImageIcons 创建的一个很好的图像加载方法:

public Image img(String path) {
    ImageIcon icon = new ImageIcon(path);
    return icon.getImage();
}

然后当您想要加载图像时,只需使用:

Image image = img("frontend/pictures/logo.png") 

这应该可行。 请注意,如果您想使用可运行的 JAR,则必须使用此实现:

static Image setImage(String path) {
    Image tmp = null;
    try {
        tmp = ImageIO.read(/*Class name*/.class.getResourceAsStream(path));
    } catch (IOException e){
        e.printStackTrace();
    }
    return tmp;
}

并输入:

Image image = setImage("/org/.../logo.png");

将您的图像放置在 JAR 的 org 文件夹内的某个子文件夹中。

关于java - 无法从包中加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813636/

相关文章:

java - 在 Eclipse 中运行 junit 测试时出现 ClassNotFoundException

java - 执行查询时出现奇怪的 DB2 异常

java - 将 MySQL Connector/MXJ 用于应用程序的优点/缺点/替代品是什么

java - 跳过运行 for 循环

ios - 在 UIButton 中使用哪种内容模式来缩放图像?

html - 如何在孔宽上连续对齐 3 个图像( Logo )并使它们在较小的显示器上保持这种对齐方式

java - 如何找出 Java 中 400 Http 错误的细节?

php - MySQL 更新语句不起作用 图片库

maven - Liquibase 3.3.3 拒绝运行 "due to maven configuration"

java - 未找到 Android Robolectric 软件包。未知包装 : apk