使用 Netbeans 时 java 中的初始化程序错误异常
Posted
技术标签:
【中文标题】使用 Netbeans 时 java 中的初始化程序错误异常【英文标题】:exception in initializer error in java when using Netbeans 【发布时间】:2011-03-23 11:50:39 【问题描述】:我正在使用 Netbeans。我用绑定做了一些事情,现在每当我启动我的程序时,甚至在它初始化表单之前,它都会给我一个错误
线程主线程中的异常发生在表单甚至是初始化对象之前。形式甚至还不是一个对象。我的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();
上出错
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
开始的,我将其删除。
【问题讨论】:
【参考方案1】:如果您使用的是 Mac M1 芯片和 room lib,请尝试以下操作: 在项目级 build.gradle 中,在 allprojects 中添加如下配置
allprojects
repositories
// ...
// ADD THE FOLLOWING
configurations.all
resolutionStrategy
force 'org.xerial:sqlite-jdbc:3.34.0'
参考:https://***.com/a/70232822/7048025
【讨论】:
【参考方案2】:我发现我已经将jFormattedCheckBox1.foreground
绑定到jCheckBox1[$selected]
.... 这就是问题所在。感谢您的帮助。
似乎颜色不能绑定到boolean
。我猜绑定是一个高级功能?
我通过删除所有控件,然后运行,然后撤消,然后一次删除一个来发现问题。当我发现有问题的控件时,我检查了属性。
【讨论】:
【参考方案3】:我遇到了同样的错误,这是由于 Lombok 版本较旧。 检查并更新您的 Lombok 版本, 龙目岛的变化
v1.18.4 - 对 lombok 的 JDK10/11 支持进行了许多改进。
【讨论】:
【参考方案4】:确保项目没有任何错误。从工作区中删除项目(使工作区与 git 文件夹不同的目录)并再次导入。
【讨论】:
【参考方案5】:Retrofit
最近更新到 2.7.1 版本。之后android 4.x
客户端崩溃了。见https://***.com/a/60071876/2914140。
将Retrofit
降级到 2.6.4。
【讨论】:
【参考方案6】:只要静态块有错误或异常,就会抛出这个异常。要了解此异常的原因,只需使用Throwable.getCause()
即可了解问题所在。
【讨论】:
【参考方案7】:希望这会有所帮助...
class SomeClass
//Code snippet here...
代码 sn-p 1:完全正常 - 已处理所有检查的异常
static void m1()
try
throw new Exception();
catch(Exception e)
System.out.println(e);
static
m1();
代码 sn-p 2:无法编译 - 未报告的检查异常
static void m1() throws Exception
throw new Exception();
static
m1();
代码 sn-p 3:OK(见代码 sn-p 1)
static void m1() throws Exception
throw new Exception();
static
trym1();
catch(Exception e)
System.out.println(e);
//or whatever
代码sn -p 4:编译错误,initilalizer必须能正常完成
static
throw new RuntimeException();
基本上可以归结为:
-
在静态块中,每个检查的异常都必须有一个处理程序。
如果发生 RuntimeException,它将被包装在 ExceptionInInitializerError 中,然后抛出后者。
这是有道理的,因为一个类应该能够正常完成初始化。如果这恰好是一个问题,则应将其归类为错误(通常很难或不可能从中恢复)而不是异常(通常可以恢复)...
【讨论】:
重新“这应该归类为错误”,为什么不取消选中RuntimeException?【参考方案8】:@Christian Ullenboom 的解释是正确的。
我推测您发布的OBD2nerForm
代码是一个静态初始化程序块,并且它都是生成的。基于此和堆栈跟踪,生成的代码似乎很可能会出错,因为它发现了表单中的某些组件不具有预期的类型。
我会执行以下操作来尝试诊断:
Google 获取有关 NetBeans 生成表单的类似问题的报告。 如果您运行的是旧版本的 NetBeans,请浏览“已修复的错误”页面以获取最新版本。或者只是升级尝试更新版本,看看是否能解决问题。 尝试从表单设计中删除一些内容,直到问题“消失”...并尝试找出真正的原因是什么。 在调试器下运行应用程序以确定什么是(错误地)类型转换为什么。只知道类名可能会有所帮助。并且查看对象的实例变量可能会发现更多信息;例如哪个特定的表单组件导致了问题。我怀疑根本原因是您的表单设计有点不寻常(或不正确),以及 NetBeans 表单生成器中的错误无法处理您的表单。如果你能想出办法,可能会找到一种解决方法。
【讨论】:
你是怎么发现问题出在不正确的投射上的? @Adam - 通过仔细查看已有的证据,您能得出的结论令人惊讶:-)【参考方案9】:如果静态初始化程序块出现问题,您会收到 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。
【讨论】:
我不明白。它似乎被包裹在我无法触及的代码中。 @Adam - 我假设你的意思是org.jdesktop.beansbinding.*
代码。您至少可以查看该代码,在其中设置断点,单步等。
它不仅在静态块发生错误时抛出。初始化静态变量时也会发生这种情况。
发生ExceptionInInitializerError后,该类不能再使用,见monperrus.net/martin/…以上是关于使用 Netbeans 时 java 中的初始化程序错误异常的主要内容,如果未能解决你的问题,请参考以下文章
使用 Netbeans 在本地 Java 服务器上开发 [关闭]
如何使用 GitHub 中的 Maven 从 NetBeans 项目迁移到 Java CI?
桌面版 NetBeans 中的“Java 应用程序”或“JavaFX 应用程序”?
如何将 java web 中的 JDBC 连接到 XAMPP (localhost) (NETBEANS)?