Jar文件初始化程序异常

时间:2013-05-24 14:40:10

标签: java swing exception command-line executable-jar

我有一个Jar文件,它由很多类组成。当我从命令行运行它(而不是双击)时,我得到了这个:
enter image description here

我看到如果static{}块中存在问题但JPanelFactory类没有静态块,则会发生这种情况。可能导致什么呢? 的
它说还有18个错误。我看不到那些。我该怎么看?

JPanelFactory

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;
    }
}

1 个答案:

答案 0 :(得分:2)

ExceptionInInitializerError中发生的<clinit>表示static { ... }初始化程序块中的某些内容或static字段的初始化表达式引发异常。在堆栈跟踪中应该有一个“由...引起”,告诉你底层异常是什么。我假设在这种情况下,它是static JPanel ...字段的初始化表达式之一,它是错误的,堆栈跟踪中的行号(JPanelFactory.java:8)应该告诉你哪一个。

“18更多”是一种速记,这意味着“由”引起的堆栈跟踪的剩余部分与原始跟踪的最后18行相同(在ExceptionInInitializerError的情况下)。在打印长链异常的堆栈跟踪时,这可以节省大量空间。