web-dev-qa-db-ja.com

初期化子エラーの例外

Netbeansを使用しています。私はバインディングでいくつかのことをしましたが、プログラムを開始するたびに、フォームを初期化する前にエラーが発生します

スレッドmainの例外は、フォームがまだ初期化されたオブジェクトになる前に発生することです。フォームはまだオブジェクトでもありません。 main()のすべての行で例外が発生します。ランダムなもの。まったくわかりません。

これがエラーです。

    Exception in thread "main" Java.lang.ExceptionInInitializerError
        at obd2ner.main(obd2ner.Java:26)
Caused by: Java.lang.ClassCastException
        at Java.lang.Class.cast(Class.Java:2990)
        at org.jdesktop.beansbinding.Binding.convertForward(Binding.Java:1312)
        at org.jdesktop.beansbinding.Binding.getSourceValueForTarget(Binding.Java:844)
        at org.jdesktop.beansbinding.Binding.refreshUnmanaged(Binding.Java:1222)
        at org.jdesktop.beansbinding.Binding.refresh(Binding.Java:1207)
        at org.jdesktop.beansbinding.AutoBinding.tryRefreshThenSave(AutoBinding.Java:162)
        at org.jdesktop.beansbinding.AutoBinding.bindImpl(AutoBinding.Java:199)
        at org.jdesktop.beansbinding.Binding.bindUnmanaged(Binding.Java:959)
        at org.jdesktop.beansbinding.Binding.bind(Binding.Java:944)
        at org.jdesktop.beansbinding.BindingGroup.bind(BindingGroup.Java:143)
        at OBD2nerForm.initComponents(OBD2nerForm.Java:731)
        at OBD2nerForm.<init>(OBD2nerForm.Java:75)
        at Status.<clinit>(Status.Java:41)
        ... 1 more
Java Result: 1

OBD2nerForm行731はbindingGroup.bind()です。 pack()でエラーになる場合があります。

「メイン」の例外は、プログラムが実行されるとすぐに発生し、行をコメントアウトするたびに次へジャンプするため、関連性がないようです。

        public void actionPerformed(ActionEvent evt) {
            jFormattedTextField2ActionPerformed(evt);
        }
    });

    jLabel8.setText("Data In Que:");

    jLabel9.setFont(new Font("DejaVu Sans", 0, 14));
    jLabel9.setText("FFFFFFFFFFFFFFFFFFFF");

    GroupLayout jPanel5Layout = new GroupLayout(jPanel5);
    jPanel5.setLayout(jPanel5Layout);
    jPanel5Layout.setHorizontalGroup(
        jPanel5Layout.createParallelGroup(GroupLayout.LEADING)
        .add(jPanel5Layout.createSequentialGroup()
            .add(jPanel5Layout.createParallelGroup(GroupLayout.LEADING)
                .add(jPanel5Layout.createSequentialGroup()
                    .add(19, 19, 19)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                        .add(jLabel7)
                        .add(jLabel5)
                        .add(jLabel6))
                    .add(18, 18, 18)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.LEADING)
                        .add(GroupLayout.TRAILING, jFormattedTextField1, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
                        .add(GroupLayout.TRAILING, jCheckBox1)
                        .add(GroupLayout.TRAILING, jCheckBox11))
                    .addPreferredGap(LayoutStyle.RELATED)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                        .add(jFormattedTextField2, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
                        .add(jCheckBox12)
                        .add(jCheckBox2))
                    .addPreferredGap(LayoutStyle.RELATED)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                        .add(jFormattedTextField3, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
                        .add(jCheckBox13)
                        .add(jCheckBox3))
                    .addPreferredGap(LayoutStyle.RELATED)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                        .add(jFormattedTextField4, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
                        .add(jCheckBox14)
                        .add(jCheckBox4))
                    .addPreferredGap(LayoutStyle.RELATED)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                        .add(jFormattedTextField5, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
                        .add(jCheckBox15)
                        .add(jCheckBox5))
                    .addPreferredGap(LayoutStyle.RELATED)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                        .add(jFormattedTextField6, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
                        .add(jCheckBox16)
                        .add(jCheckBox6))
                    .addPreferredGap(LayoutStyle.RELATED)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                        .add(jFormattedTextField7, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
                        .add(jCheckBox17)
                        .add(jCheckBox7))
                    .addPreferredGap(LayoutStyle.RELATED)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                        .add(jFormattedTextField8, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
                        .add(jCheckBox18)
                        .add(jCheckBox8))
                    .addPreferredGap(LayoutStyle.RELATED)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.LEADING)
                        .add(GroupLayout.TRAILING, jFormattedTextField9, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)
                        .add(GroupLayout.TRAILING, jCheckBox19)
                        .add(GroupLayout.TRAILING, jCheckBox9))
                    .addPreferredGap(LayoutStyle.RELATED)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.LEADING)
                        .add(jCheckBox20)
                        .add(jCheckBox10)
                        .add(jFormattedTextField10, GroupLayout.PREFERRED_SIZE, 22, GroupLayout.PREFERRED_SIZE)))
                .add(jPanel5Layout.createSequentialGroup()
                    .add(4, 4, 4)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.LEADING)
                        .add(jPanel5Layout.createSequentialGroup()
                            .add(jLabel8)
                            .addPreferredGap(LayoutStyle.RELATED)
                            .add(jLabel9, GroupLayout.PREFERRED_SIZE, 256, GroupLayout.PREFERRED_SIZE))
                        .add(jSeparator1, GroupLayout.PREFERRED_SIZE, 474, GroupLayout.PREFERRED_SIZE))))
            .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        .add(GroupLayout.TRAILING, jPanel5Layout.createSequentialGroup()
            .addContainerGap(346, Short.MAX_VALUE)
            .add(jToggleButton3, GroupLayout.PREFERRED_SIZE, 132, GroupLayout.PREFERRED_SIZE)
            .addContainerGap())
    );
    jPanel5Layout.setVerticalGroup(
        jPanel5Layout.createParallelGroup(GroupLayout.LEADING)
        .add(jPanel5Layout.createSequentialGroup()
            .addContainerGap()
            .add(jPanel5Layout.createParallelGroup(GroupLayout.BASELINE)
                .add(jLabel5)
                .add(jFormattedTextField1, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .add(jFormattedTextField2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .add(jFormattedTextField3, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .add(jFormattedTextField4, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .add(jFormattedTextField5, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .add(jFormattedTextField6, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .add(jFormattedTextField7, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .add(jFormattedTextField8, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .add(jFormattedTextField9, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .add(jFormattedTextField10, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
            .addPreferredGap(LayoutStyle.RELATED)
            .add(jSeparator1, GroupLayout.PREFERRED_SIZE, 0, GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(LayoutStyle.RELATED)
            .add(jPanel5Layout.createParallelGroup(GroupLayout.LEADING)
                .add(jCheckBox3)
                .add(jCheckBox1)
                .add(jCheckBox2)
                .add(jCheckBox4)
                .add(jCheckBox5)
                .add(jCheckBox6)
                .add(jCheckBox7)
                .add(jCheckBox8)
                .add(jCheckBox9)
                .add(jLabel6)
                .add(jCheckBox10))
            .addPreferredGap(LayoutStyle.RELATED)
            .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                .add(jPanel5Layout.createParallelGroup(GroupLayout.LEADING)
                    .add(jLabel7)
                    .add(jPanel5Layout.createParallelGroup(GroupLayout.TRAILING)
                        .add(jCheckBox13)
                        .add(jCheckBox12)
                        .add(jCheckBox11)
                        .add(jCheckBox14)
                        .add(jCheckBox15)
                        .add(jCheckBox16)
                        .add(jCheckBox17)
                        .add(jCheckBox18)
                        .add(jCheckBox19)))
                .add(jCheckBox20))
            .addPreferredGap(LayoutStyle.RELATED, 42, Short.MAX_VALUE)
            .add(jPanel5Layout.createParallelGroup(GroupLayout.BASELINE)
                .add(jToggleButton3)
                .add(jLabel8)
                .add(jLabel9))
            .addContainerGap())
    );

    jTabbedPane1.addTab("tab6", jPanel5);

    add(jTabbedPane1, BorderLayout.CENTER);

    bindingGroup.bind();

    pack();
}// </editor-fold>       

助けてください、私は理解していません。私からどんな情報が必要ですか?

編集:それはすべて私が触れることができないコードのようです。これは、削除したnetbeansが約200個の無効なインポート「import jCheckbox1」を追加することから始まったことを追加する必要があります。

62
Adam Outler

静的初期化ブロックで何か問題が発生すると、ExceptionInInitializerErrorが発生します。

class C
{
  static
  {
     // if something does wrong -> ExceptionInInitializerError
  }
}

静的変数は静的ブロックで初期化されるため、これらのエラーの原因もあります。例:

class C
{
  static int v = D.foo();
}

=>

class C
{
  static int v;

  static
  {
    v = D.foo();
  }
}

したがって、foo()がワイルドになると、ExceptionInInitializerErrorが発生します。

111

お役に立てれば...

class SomeClass{
  //Code snippet here...
}

コードスニペット1:まったく問題ありません-すべてのチェック済み例外が処理されました

static void m1(){
        try{
            throw new Exception();
        } catch(Exception e){
            System.out.println(e);
        }
}
static{
        m1();
}

コードスニペット2:コンパイルされない-報告されていないチェック例外

static void m1() throws Exception{
        throw new Exception();
}
static{
        m1();
}

コードスニペット3:OK(コードスニペット1を参照)

static void m1() throws Exception{
        throw new Exception();
}
static{
        try{m1();}
        catch(Exception e){
            System.out.println(e);
            //or whatever
        }
}

コードスニペット4:コンパイルエラー、初期化子は正常に完了できる必要があります

static{
        throw new RuntimeException();
}

基本的にこれは次のように要約されます。

  1. 静的ブロック内では、すべてのチェック済み例外にハンドラーが必要です。
  2. RuntimeExceptionが発生した場合、ExceptionInInitializerErrorにラップされ、後者がスローされます。

これは、クラスが初期化を正常に完了する必要があるためです。これが問題になる場合は、例外(通常は回復可能)ではなく、エラー(回復は通常困難または不可能)として分類する必要があります...

12
Utsav

@Christian Ullenboomの説明は正しい。

投稿したOBD2nerFormコードは静的な初期化ブロックであり、すべて生成されていると思われます。それとスタックトレースに基づくと、生成されたコードは、期待しているタイプを持たないフォームのコンポーネントを見つけたためにトリップしているようです。

これを試して診断するには、次のようにします。

  • NetBeansで生成されたフォームに関する同様の問題のレポートについては、Googleをご覧ください。
  • 古いバージョンのNetBeansを実行している場合は、「バグ修正」ページで最新リリースをスキャンしてください。または、とにかくアップグレードして新しいリリースを試して、問題が解決するかどうかを確認してください。
  • 問題が「なくなる」まで、フォームデザインからビットを削除してみてください...そして、本当の原因がそのようになっているものを見つけようとします。
  • デバッガーの下でアプリケーションを実行して、何が(誤って)型キャストされているかを調べます。クラス名を知っているだけで役立つ場合があります。そして、オブジェクトのインスタンス変数を見るとさらに明らかになるかもしれません。例えばどの特定のフォームコンポーネントが問題を引き起こしています。

私の疑いは、根本原因がフォーム設計と少し変わった(または正しくない)何かの組み合わせと、フォームに対応していないNetBeansフォームジェネレーターのバグであるということです。あなたがそれを理解できるなら、回避策はそれ自身を明らかにするかもしれません。

4
Stephen C

JFormattedCheckBox1.foregroundをjCheckBox1 [$ {selected}]にバインドしていることがわかりました。これが問題でした。ご協力ありがとうございました。

色をブール値にバインドできないように思われます。バインディングは「高度な機能」だと思いますか?

すべてのコントロールを削除し、実行してから元に戻し、削除することで問題を見つけました。問題のあるコントロールが見つかったら、プロパティを調べました。

3
Adam Outler

静的ブロックにエラーまたは例外がある場合は常に、この例外がスローされます。この例外の原因を取得するには、単にThrowable.getCause()を使用して、何が問題なのかを確認します。

0
Amir Forsati