我有一个简单的 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:无法初始化类”错误
似乎是完全相同的问题。那么我不应该使用静态变量吗?
编辑2:
如果我使用静态初始化程序块,则会立即抛出 ExceptionInInitializerError。没有静态初始化程序块,我能够进入程序的第一个菜单。
编辑 3:
也许是另一个提示!当我提取我的 jar 时,所有图形都直接在根文件夹中,所以我尝试使用这样的相对路径:
public static final String PLAYFIELD_SMALL_IMAGE_PATH = "Player_Small.png";
但如果我这样做,我的图形就不会加载。