在使用 Netbeans 时,Java 中的初始化器错误出现异常

我正在使用 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

线路 731bindingGroup.bind(); 有时它在 pack();上出错

main()中的异常看起来并不相关,因为它在程序运行的时候就出现了,每次我注释掉一行,它就跳转到下一行

        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,我删除了。

262639 次浏览

如果静态初始化器块中出现错误,则会得到 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。

@ Christian Ullenboom 的解释是正确的。

我推测您发布的 OBD2nerForm代码是一个静态初始化器块,并且它是全部生成的。基于这一点和堆栈跟踪,生成的代码似乎有可能出错,因为它发现表单的某个组件没有它所期望的类型。

我会做以下事情来诊断:

  • 谷歌关于 NetBeans 生成的表单存在类似问题的报告。
  • 如果您运行的是旧版本的 NetBeans,请浏览“ bug 修复”页面,查看更多最新版本。或者只是升级,无论如何尝试一个更新的版本,看看是否可以修复这个问题。
  • 试着从表单设计中剪下一些片段,直到问题“消失”... ... 然后试着找出真正的原因是什么。
  • 在调试器下运行应用程序,以确定哪些类型被(错误地)强制转换为哪些类型。知道类名可能会有帮助。观察对象的实例变量可能会揭示更多信息,例如,哪个特定的形式组件导致了问题。

我怀疑根本原因是表单设计有点不寻常(或不正确) ,以及 NetBeans 表单生成器中没有处理表单的错误。如果你能解决这个问题,一个变通方法可能会显现出来。

我发现我把 jFormattedCheckBox1.foreground绑定到了 jCheckBox1[${selected}]... ... 这就是问题所在。谢谢你的帮助。

似乎一种颜色不应该被绑定到 boolean。我猜绑定是 高级功能

我通过删除所有的控件,然后运行,然后撤消,然后一次删除一个来发现问题。当我找到违规控件时,我检查了属性。

希望这个能帮上忙。

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 中,然后抛出后者。

这是有意义的,因为类应该能够正常地完成初始化。如果这碰巧是一个问题,这应该被归类为一个错误(从中恢复通常是困难的或不可能的) ,而不是一个异常(通常是可恢复的) ..。

只要静态块中存在错误或异常,就会引发此异常。要得到这个异常的原因,只需使用 Throwable.getCause()来知道哪里出错了。

Retrofit最近升级到了2.7.1版本。在那之后,Android 4.x客户端就崩溃了。参见 https://stackoverflow.com/a/60071876/2914140

Retrofit下调至2.6。

确保项目没有任何错误。从工作区中删除项目(使工作区成为与 git 文件夹不同的目录) ,然后再次导入。

我得到了相同的错误,这是由于旧的龙目岛版本。 检查和更新你的龙目岛版本, 龙目岛的变化

1.18.4-对 Lombok 的 JDK10/11支持的许多改进。

如果你使用的是 Mac M1芯片和 Room lib,试试这个: 在项目级 build.gradle 中,在 allproject 中添加以下配置

allprojects {
repositories {
// ...
}


// ADD THE FOLLOWING
configurations.all {
resolutionStrategy {
force 'org.xerial:sqlite-jdbc:3.34.0'
}
}

}

档号: https://stackoverflow.com/a/70232822/7048025