java - excepción en el error de inicialización
binding pack (4)
Descubrí que había vinculado jFormattedCheckBox1.foreground a jCheckBox1 [$ {selected}] ... este era el problema. Gracias por tu ayuda.
Parece que un color no debería poder vincularse a un booleano. ¿Supongo que los enlaces son una "característica avanzada"?
Encontré el problema al eliminar todos los controles, luego ejecutar, luego deshacer y luego eliminar uno a la vez. Cuando encontré el control ofensivo, examiné las propiedades.
Estoy usando Netbeans. Hice algunas cosas con enlaces y ahora cada vez que inicio mi programa, incluso antes de iniciar el formulario, me da un error
La excepción en el hilo principal está ocurriendo antes de que la forma sea aún un objeto inicializado. La forma ni siquiera es un objeto. Cada línea en mi main () causa una excepción. Cosas al azar. No lo entiendo en absoluto.
Aquí está el error
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 línea 731 es bindingGroup.bind (); a veces se equivoca en el paquete ();
la excepción en "main" ni siquiera parece relevante porque ocurre tan pronto como se ejecuta el programa y cada vez que comente una línea salta a la siguiente
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>
por favor ayuda, no entiendo. ¿Qué información necesitas de mí?
editar: parece que todo es código que no puedo tocar. Debo añadir que esto comenzó con netbeans agregando alrededor de 200 importaciones inválidas "import jCheckbox1" que eliminé.
Espero que esto ayude...
class SomeClass{
//Code snippet here...
}
Fragmento de código 1: absolutamente correcto: todas las excepciones controladas manejadas
static void m1(){
try{
throw new Exception();
} catch(Exception e){
System.out.println(e);
}
}
static{
m1();
}
Fragmento de código 2: no compilará: excepción comprobada no declarada
static void m1() throws Exception{
throw new Exception();
}
static{
m1();
}
Fragmento de código 3: OK (ver fragmento de código 1)
static void m1() throws Exception{
throw new Exception();
}
static{
try{m1();}
catch(Exception e){
System.out.println(e);
//or whatever
}
}
Fragmento de código 4: Error de compilación, initilalizer debe poder completar normalmente
static{
throw new RuntimeException();
}
Básicamente se reduce a esto:
- Dentro del bloque estático, cada excepción marcada DEBE tener un controlador.
- Si ocurriera una RuntimeException, estaría envuelta en ExceptionInInitializerError y luego se lanzaría la última.
Esto tiene sentido ya que UNA CLASE DEBERÍA PODER COMPLETAR LA INICIALIZACIÓN NORMALMENTE. Si esto resulta ser un problema, se debe categorizar como un Error (de la cual la recuperación es generalmente difícil o imposible) en lugar de una Excepción (que generalmente es recuperable) ...
La explicación de @Christian Ullenboom es correcta.
Supongo que el código OBD2nerForm
que ha publicado es un bloque de inicializador estático y que todo se ha generado. En función de eso y del seguimiento de la pila, parece probable que el código generado se esté tropezando porque haya encontrado algún componente de su formulario que no tiene el tipo que está esperando.
Haría lo siguiente para tratar de diagnosticar esto:
- Google para informes de problemas similares con formularios generados NetBeans.
- Si está ejecutando una versión anterior de NetBeans, explore las páginas "errores solucionados" para las versiones más recientes. O simplemente actualice intente una versión más nueva de todos modos para ver si eso soluciona el problema.
- Intente cortar las partes del diseño de la forma hasta que el problema "desaparezca" ... y trate de descubrir cuál es la causa real de esa manera.
- Ejecute la aplicación debajo de un depurador para descubrir qué tipo (incorrectamente) se escribe como qué. Solo saber los nombres de las clases puede ayudar. Y mirando las variables de instancia de los objetos puede revelar más; por ejemplo, qué componente de forma específico está causando el problema.
Mi sospecha es que la causa raíz es una combinación de algo un poco inusual (o incorrecto) con el diseño de su formulario, y errores en el generador de formularios de NetBeans que no está haciendo frente a su formulario. Si puede resolverlo, una solución alternativa puede revelarse.
Obtiene un ExceptionInInitializerError si algo sale mal en el bloque de inicializador estático.
class C
{
static
{
// if something does wrong -> ExceptionInInitializerError
}
}
Debido a que las variables estáticas se inicializan en bloques estáticos, también hay una fuente de estos errores. Un ejemplo:
class C
{
static int v = D.foo();
}
=>
class C
{
static int v;
static
{
v = D.foo();
}
}
Entonces, si foo () se vuelve loco, obtienes un ExceptionInInitializerError.