gpt4 book ai didi

Java 简单项目处理资源

转载 作者:行者123 更新时间:2023-12-04 04:45:43 25 4
gpt4 key购买 nike

我有一个简单的 java 项目,我有一个名为 Constants 的类
我将所有需要的路径存储在静态变量中,就像这样
例如:

public static final String PLAYFIELD_SMALL_IMAGE_PATH =  Constants.class.getClassLoader().getResource("Player_Small.png").getPath();

只要我留在我的 Eclipse 中就可以正常工作;)

但是当我将程序导出到 JAR 文件并启动它时,出现异常:
java.lang.ExceptionInInitializerError

它出现在我第一次调用以下内容时:
Constants.PLAYFIELD_SMALL_IMAGE_PATH

如果我第二次开始,我会收到此错误:
java.lang.NoClassDefFound: Could not initalize class Constants

我到底做错了什么?

编辑 1:

我在这里找到了这个: "NoClassDefFoundError: Could not initialize class" error

似乎是完全相同的问题。那么我不应该使用静态变量吗?

编辑2:

如果我使用静态初始化块一个 ExceptionInInitializerError
立即被抛出。没有静态初始化程序块我能够
进入我的程序的第一个菜单。

编辑 3:

也许是另一个提示!当我提取 jar 时,所有图形都直接位于根文件夹中,因此
我尝试使用这样的相对路径:
public static final String PLAYFIELD_SMALL_IMAGE_PATH = "Player_Small.png";

但如果我这样做,我的图形不会加载。

最佳答案

你的问题正是:

public static final String PLAYFIELD_SMALL_IMAGE_PATH =  Constants.class.getClassLoader().getResource("Player_Small.png").getPath();

阅读本文: NoClassDefFoundError .这篇文章解释了如何
解决您的问题。

我建议您从 Constants 类中删除所有路径
进入另一个类而不在那里使用静态变量。
也许使用 URL 而不是 String-Pathes 因为正如你提到的
你使用图像。图像将需要 URL 来定位,因为它们
不在硬盘上。如果您不使用 URL,则可能无法打印您的图像。

关于Java 简单项目处理资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18227458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com