我有一个Jar文件,它由很多类组成。当我从命令行运行它(而不是双击)时,我得到了这个:
我看到如果static{}
块中存在问题但JPanelFactory
类没有静态块,则会发生这种情况。可能导致什么呢?
的也
它说还有18个错误。我看不到那些。我该怎么看?
public class JPanelFactory {
static JPanel holder = new JPanel(new GridLayout(0,1,5,5));
static JLabel addNewTaskLabel = new JLabel(constants.IconNames.addVideo,JLabel.CENTER);
static JLabel deleteTaskLabel = new JLabel(constants.IconNames.deleteVideo,JLabel.CENTER);
protected JPanelFactory(){
}
public static JPanelFactory newInstance(TransferHandler addHandler, TransferHandler removeHandler){
addNewTaskLabel.setTransferHandler(addHandler);
deleteTaskLabel.setTransferHandler(removeHandler);
return new JPanelFactory();
}
public JPanel newJPanel(){
holder.add(addNewTaskLabel);
holder.add(deleteTaskLabel);
return holder;
}
}
答案 0 :(得分:2)
ExceptionInInitializerError
中发生的<clinit>
表示static { ... }
初始化程序块中的某些内容或static
字段的初始化表达式引发异常。在堆栈跟踪中应该有一个“由...引起”,告诉你底层异常是什么。我假设在这种情况下,它是static JPanel ...
字段的初始化表达式之一,它是错误的,堆栈跟踪中的行号(JPanelFactory.java:8
)应该告诉你哪一个。
“18更多”是一种速记,这意味着“由”引起的堆栈跟踪的剩余部分与原始跟踪的最后18行相同(在ExceptionInInitializerError
的情况下)。在打印长链异常的堆栈跟踪时,这可以节省大量空间。