私は単純な 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";
しかし、そうすると、グラフィックがロードされません。