web-dev-qa-db-fra.com

exception en cas d'erreur d'initialisation

J'utilise Netbeans. J'ai fait des choses avec des liaisons et maintenant, chaque fois que je lance mon programme, avant même que le formulaire ne soit initialisé, cela me donne une erreur

L'exception dans thread principal se produit avant que la fiche ne soit encore un objet initial. La forme n'est même pas encore un objet. Chaque ligne de ma main () provoque une exception. Choses aléatoires. Je ne comprends pas du tout.

Voici l'erreur.

    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

La ligne 731 d'OBD2nerForm est bindingGroup.bind (); Parfois, il se trompe sur pack ();

l'exception dans "main" ne semble même pas pertinente, car elle se produit dès que le programme est exécuté et chaque fois que je commente une ligne, elle passe à la suivante.

        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>       

s'il vous plaît aider, je ne comprends pas. De quelle information avez-vous besoin de moi?

edit: tout semble être du code que je ne peux pas toucher. J'ajouterais que cela a commencé avec l'ajout par Netbeans d'environ 200 importations non valides "import jCheckbox1" que j'ai supprimées.

62
Adam Outler

Vous obtenez une ExceptionInInitializerError si quelque chose ne va pas dans le bloc d'initialisation statique.

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

Comme les variables statiques sont initialisées dans des blocs statiques, il existe également une source de ces erreurs. Un exemple:

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

=>

class C
{
  static int v;

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

Donc, si foo () devient sauvage, vous obtenez une ExceptionInInitializerError.

111
Christian Ullenboom

J'espère que cela t'aides...

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

Extrait de code 1: Absolument OK - toutes les exceptions vérifiées sont gérées

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

Extrait de code 2: Ne compile pas - exception vérifiée non signalée

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

Extrait de code 3: OK (voir l'extrait de code 1)

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

Extrait de code 4: erreur de compilation, initilalizer doit pouvoir se terminer normalement

static{
        throw new RuntimeException();
}

En gros, cela se résume à ceci:

  1. À l'intérieur du bloc statique, chaque exception vérifiée DOIT avoir un gestionnaire.
  2. Si une exception RuntimeException devait se produire, elle serait encapsulée dans ExceptionInInitializerError, puis cette dernière serait renvoyée.

Cela est logique dans la mesure où une classe devrait pouvoir mener à bien une initiation normale. S'il s'agit d'un problème, il convient de le classer comme une erreur (dont la récupération est généralement difficile ou impossible) plutôt qu'une exception (qui est généralement récupérable) ...

12
Utsav

L'explication de @Christian Ullenboom est correcte.

Je suppose que le OBD2nerForm Le code que vous avez posté est un bloc d’initialisation statique et est entièrement généré. Sur la base de cela et de la trace de la pile, il semble probable que le code généré est en train de démarrer car il a trouvé un composant de votre formulaire qui n'a pas le type attendu.

Je ferais ce qui suit pour essayer de diagnostiquer ceci:

  • Google pour les rapports de problèmes similaires avec les formulaires générés par NetBeans.
  • Si vous utilisez une ancienne version de NetBeans, parcourez les pages "corrections de bugs" pour rechercher les versions les plus récentes. Ou simplement mettre à niveau essayez quand même une version plus récente pour voir si cela résout le problème.
  • Essayez de supprimer des éléments de la conception de formulaire jusqu'à ce que le problème "disparaisse" ... et essayez de déterminer quelle est la véritable cause.
  • Exécutez l'application sous un débogueur pour déterminer ce qui est (incorrectement) transtypé comme quoi. Le simple fait de connaître les noms de classe peut aider. Et en regardant les variables d'instance des objets peut révéler plus; par exemple. quel composant de formulaire spécifique est à l'origine du problème.

Je soupçonne que la cause première est une combinaison de quelque chose d'un peu inhabituel (ou incorrect) avec votre conception de formulaire et de bugs dans le générateur de formulaire NetBeans qui ne gèrent pas votre formulaire. Si vous pouvez le comprendre, une solution de contournement peut se révéler.

4
Stephen C

J'ai trouvé que j'avais lié jFormattedCheckBox1.foreground à jCheckBox1 [$ {selected}] .... c'était le problème. Merci de votre aide.

Il semble qu'une couleur ne devrait pas pouvoir être liée à un booléen. Je suppose que les reliures sont une "fonctionnalité avancée"?

J'ai trouvé le problème en supprimant tous les contrôles, puis en exécutant, puis en annulant et en supprimant un à la fois. Quand j'ai trouvé le contrôle incriminé, j'ai examiné les propriétés.

3
Adam Outler

Partout où il y a des erreurs ou des exceptions dans les blocs statiques, cette exception sera levée. Pour obtenir la cause de cette exception, utilisez simplement Throwable.getCause() pour savoir ce qui ne va pas.

0
Amir Forsati