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」を追加することから始まったことを追加する必要があります。
静的初期化ブロックで何か問題が発生すると、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が発生します。
お役に立てれば...
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();
}
基本的にこれは次のように要約されます。
これは、クラスが初期化を正常に完了する必要があるためです。これが問題になる場合は、例外(通常は回復可能)ではなく、エラー(回復は通常困難または不可能)として分類する必要があります...
@Christian Ullenboomの説明は正しい。
投稿したOBD2nerForm
コードは静的な初期化ブロックであり、すべて生成されていると思われます。それとスタックトレースに基づくと、生成されたコードは、期待しているタイプを持たないフォームのコンポーネントを見つけたためにトリップしているようです。
これを試して診断するには、次のようにします。
私の疑いは、根本原因がフォーム設計と少し変わった(または正しくない)何かの組み合わせと、フォームに対応していないNetBeansフォームジェネレーターのバグであるということです。あなたがそれを理解できるなら、回避策はそれ自身を明らかにするかもしれません。
JFormattedCheckBox1.foregroundをjCheckBox1 [$ {selected}]にバインドしていることがわかりました。これが問題でした。ご協力ありがとうございました。
色をブール値にバインドできないように思われます。バインディングは「高度な機能」だと思いますか?
すべてのコントロールを削除し、実行してから元に戻し、削除することで問題を見つけました。問題のあるコントロールが見つかったら、プロパティを調べました。
静的ブロックにエラーまたは例外がある場合は常に、この例外がスローされます。この例外の原因を取得するには、単にThrowable.getCause()
を使用して、何が問題なのかを確認します。