の静的ブロックの結果でのstatic final String型の人口が、私はこのクラスを持っている:のJava:NoClassDefFoundErrorが
public final class Validator {
private static final String TEST_VALUE = "test";
private static final String TEST;
static {
TEST = TEST_VALUE + "_test";
}
private Validator() {}
public static void validate() {
//Do something with TEST
}
}
私はどこか別の場所からValidator.validate()
を呼び出すと、私はStatic block in Java not executedから理解では、私はjava.lang.NoClassDefFoundError: Could not initialize ....Validator
を取得し、最終的静的な文字列はコンパイル時にあらかじめ用意されています。
変数がスタティックブロックでのみ定義されている場合、これが当てはまりますか?私は、コンパイラがその最終変数をあらかじめ設定しようとはしないことを期待しています。
そうでない場合はどうすればいいですか?デバッガで
私は、静的なブロックが実行されることはありませんことに気づいた、しかし...
これはところでJavaの8である理由私は得ることはありません。
UPDATE:
問題は、静的ブロックでJavaのエラーでした。 奇妙なことは、スタティックブロックの何かを指しているログにエラーがないことと、静的コンストラクタでデバッガが停止しなかったことです。そのため、問題は他のどこかで嘘をついたと考えました。
あなたは[MVCE](http://stackoverflow.com/help/mcve)を提供できますか?あなたの問題を再現することはできませんし、他のクラスのValidator.validate()を呼び出すことは私にとってうまくいきます。 –
上記のコードで孤立したサンプルを作成すると、問題は発生しません。私はいくつかの調査を行い、質問を数分で更新します。 –