Java:由于 "java.lang.NoClassDefFoundError: Could not initialize class me.ryan.Resources",程序随机停止工作

标签 java noclassdeffounderror

我一直在编写一个游戏,并且有一段时间我上了一门名为“资源”的类(class)。由于某种原因,当我几乎不对类(class)进行任何编辑时,它就会停止工作。这是我的资源类:

public class Resources {

public static final BufferedImage background = load("/background.png");
public static final BufferedImage introBackground = load("/introBackground.png");
public static final BufferedImage sneem = load("/sneem.png");
public static final BufferedImage grass = load("/grass.png");
public static final BufferedImage wall = load("/wall.png");

public static BufferedImage load(String path){
    URL url = Resources.class.getResource(path);
    try {
        return ImageIO.read(url);
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

}

另外:我从头开始创建这个类,我没有使用任何库或类似的东西。

最佳答案

此消息....

“java.lang.NoClassDefFoundError: Could not initialize class me.ryan.Resources”

意味着您的Resources类的静态初始化失败。异常消息没有说明原因,但堆栈跟踪可能会说......在嵌套异常链中。

发生失败的原因是您的一个 load 调用由于未捕获未检查异常而失败。

<小时/>

查看load的代码我猜测该异常是NullPointerException,并且它发生的原因是

Resources.class.getResource(path)

调用返回了 null 而不是 URL 对象。如果类加载器找不到路径名与您请求的资源相对应的资源,它将执行此操作。

如果出现这种情况,那么根本原因是您使用了错误的路径。或者您的构建/部署过程没有将所需的图像文件放置在类加载器期望的位置;例如如果您从可执行 JAR 运行,则在 JAR 文件中。

关于Java:由于 "java.lang.NoClassDefFoundError: Could not initialize class me.ryan.Resources",程序随机停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39883470/

相关文章:

java - 替换已弃用的 Java 方法

c# - 虚拟机如何执行指令?

java - 如何通过纯 Java 使用 P2D、P3D、FX2D?

android - java.lang.NoClassDefFoundError : org. jscience.mathematics.function.Variable$Local 错误

java - 客户端如何使用 EC2 连接到服务器

java - 如何避免多次执行查询?

java - 最好/最简单的 java 媒体框架

java.lang.NoClassDefFoundError

android - pdfbox android studio 中的 NoClassDefFoundError

java - JApplet运行时异常