2010-07-30 44 views
36

Tôi đang sử dụng Netbeans. Tôi đã làm một số điều với bindings và bây giờ bất cứ khi nào tôi bắt đầu chương trình của tôi, trước khi nó thậm chí intializes hình thức, nó mang lại cho tôi một lỗingoại lệ trong lỗi trình khởi tạo

Ngoại lệ trong chủ đề chính là ocuring trước khi biểu mẫu thậm chí là một đối tượng intialized được nêu ra. Biểu mẫu thậm chí không phải là một đối tượng. Mỗi dòng trong chính của tôi() gây ra một ngoại lệ. Công cụ ngẫu nhiên. Tôi không hiểu gì cả.

Đây là lỗi.

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 

OBD2nerĐường dòng 731 là bindingGroup.bind(); đôi khi nó bị lỗi trên gói();

các ngoại lệ trong "chính" thậm chí không dường như có liên quan bởi vì nó xảy ra ngay sau khi chương trình được chạy và mỗi khi tôi nhận xét ra một dòng nó nhảy đến tiếp theo

 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>  

xin vui lòng giúp đỡ, tôi làm không hiểu. Bạn cần thông tin gì từ tôi?

chỉnh sửa: dường như tất cả đều là mã mà tôi không thể chạm vào. Tôi chắc chắn nên thêm rằng điều này bắt đầu với netbeans thêm khoảng 200 nhập khẩu không hợp lệ "import jCheckbox1" mà tôi đã xóa.

Trả lời

80

Bạn nhận được một ExceptionInInitializerError nếu có gì đó sai trong khối khởi tạo tĩnh.

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

Vì các biến tĩnh được khởi tạo trong các khối tĩnh cũng có một nguồn của các lỗi này. Một ví dụ:

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

=>

class C 
{ 
    static int v; 

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

Vì vậy, nếu foo() đi hoang dã, bạn nhận được một ExceptionInInitializerError.

+2

Tôi không hiểu. Nó dường như được bọc trong mã mà tôi không thể chạm vào. –

+0

@Adam - Tôi giả sử bạn có nghĩa là mã 'org.jdesktop.beansbinding. *'. Bạn ít nhất có thể xem mã đó, đặt các điểm ngắt trong đó, một bước, v.v. –

4

Giải thích @Christian Ullenboom 'là chính xác.

Tôi phỏng đoán rằng mã OBD2nerForm bạn đã đăng là khối khởi tạo tĩnh và tất cả được tạo. Dựa trên điều đó và trên dấu vết ngăn xếp, có vẻ như khả năng mã được tạo ra bị vấp ngã vì nó đã tìm thấy một số thành phần của biểu mẫu của bạn mà không có kiểu mong đợi.

Tôi muốn làm như sau để thử và chẩn đoán này:

  • Google cho các báo cáo của các vấn đề tương tự với NetBeans hình thức tạo ra.
  • Nếu bạn đang chạy phiên bản cũ của NetBeans, hãy quét qua các trang "lỗi cố định" để biết thêm các bản phát hành gần đây. Hoặc chỉ cần nâng cấp thử bản phát hành mới hơn để xem có khắc phục được sự cố không.
  • Hãy thử cắt bit ra khỏi thiết kế biểu mẫu cho đến khi vấn đề "biến mất" ... và cố gắng tìm ra nguyên nhân thực sự là như thế.
  • Chạy ứng dụng dưới trình gỡ lỗi để tìm ra loại đang được sử dụng (không đúng). Chỉ cần biết tên lớp có thể hữu ích. Và nhìn vào các biến cá thể của các đối tượng có thể tiết lộ nhiều hơn; ví dụ. thành phần biểu mẫu cụ thể nào đang gây ra sự cố.

Nghi ngờ của tôi là nguyên nhân gốc là sự kết hợp của một thứ gì đó không bình thường (hoặc không chính xác) với thiết kế biểu mẫu của bạn và lỗi trong trình tạo biểu mẫu NetBeans không đối phó với biểu mẫu của bạn. Nếu bạn có thể tìm ra, một cách giải quyết có thể tự tiết lộ.

+0

làm cách nào bạn nhận ra rằng vấn đề là truyền không đúng cách? –

+0

Oh ... ngoại lệ lớp học diễn viên. cảm ơn! –

+0

@Adam - nó là tuyệt vời những gì bạn có thể tìm ra bằng cách xem xét cẩn thận bằng chứng bạn đã có :-) –

2

Tôi thấy rằng tôi đã bị ràng buộc jFormattedCheckBox1.foreground đến jCheckBox1 [$ {selected}] .... đây là vấn đề. Cảm ơn sự giúp đỡ của bạn.

Dường như một màu không thể bị ràng buộc với boolean. Tôi đoán ràng buộc là một "tính năng nâng cao"?

Tôi đã tìm thấy sự cố bằng cách xóa tất cả các điều khiển, sau đó chạy, sau đó hoàn tác và sau đó xóa từng lần một. Khi tôi tìm thấy sự kiểm soát vi phạm, tôi đã kiểm tra các thuộc tính.

8

Hope this helps ...

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

Mã đoạn mã 1: Tuyệt đối OK - tất cả các trường hợp ngoại lệ xử lý

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

Mã kiểm tra đoạn mã 2: Sẽ không biên dịch - không được báo cáo kiểm tra ngoại lệ

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

Đoạn mã 3: OK (xem đoạn mã 1)

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

Mã đoạn mã 4: lỗi Compilation, initilalizer phải có khả năng để hoàn thành thường

static{ 
     throw new RuntimeException(); 
} 

Về cơ bản nó nắm này:

  1. Bên trong khối tĩnh, mỗi kiểm tra ngoại lệ PHẢI có một người xử lý.
  2. Nếu một RuntimeException xảy ra, nó sẽ được bao bọc trong ExceptionInInitializerError và sau đó nó sẽ được ném ra.

Điều này có ý nghĩa là A CLASS NÊN ĐƯỢC HOÀN TOÀN KHỞI ĐỘNG BÌNH LUẬN. Nếu điều này xảy ra là một vấn đề, điều này sẽ được phân loại là Lỗi (từ đó việc khôi phục thường khó hoặc không thể) thay vì Ngoại lệ (thường có thể khôi phục) ...

+0

Re "này nên được phân loại như là một lỗi", Tại sao không được kiểm tra RuntimeException? – Pacerier

Các vấn đề liên quan