簡體   English   中英

Netbeans在創建匿名子類的內部類的匿名子類時找不到主類

[英]Netbeans fails to find main class when creating anonymous subclass of inner class of anonymous subclass

當我嘗試在其包含類的包含類的匿名子類的初始化中創建一個新的匿名Action子類時,Netbeans在運行時突然找不到主類,盡管能夠進行清理+構建沒有問題,並且可以與此運行代碼已注釋掉。 script.new Action(0){...}在運行時導致“錯誤:找不到或加載主類”注釋掉代碼可以成功運行

代碼結構:

主包裝:

  • 主類<-當前正在查看此文件
    • public void run(...)(在main(String [] args)中調用)
      • 演員a =新演員(){
        • 腳本腳本= new Script();
        • {(演員實例啟動代碼)
          • script.new Action(0){...}導致損壞
  • 包演員
    • 公共抽象類演員
      • 公共類腳本
        • 公共抽象類動作

在一個簡單的類中復制:

package tests;

public class ClassTester {
    public static void main(String[] args) {
        ClassTester tester = new ClassTester();
        tester.run();
    }
    public void run() {
        final Inner1 A = new Inner1() {
            {
                B = this.new Inner2() {
                    @Override
                    public void run() {
                        System.out.println("Hello, world!");
                    }
                };
            }
        };
        A.B.run();
    }
    public class Inner1 {
        public Inner2 B;
        public abstract class Inner2 implements Runnable {
        }
    }
}
-->
Error: Could not find or load main class tests.ClassTester
Java Result: 1

有趣的是,-XX:+ PrintCompilation揭示了崩潰之前運行的某些內容:

     50    1             java.lang.String::hashCode (55 bytes)
     50    2             java.lang.String::charAt (29 bytes)
Error: Could not find or load main class tests.ClassTester
Java Result: 1

產品版本:NetBeans IDE 7.3.1(Build 201306052037)Java:1.7.0_25; Java HotSpot(TM)64位服務器VM 23.25-b01運行時:Java(TM)SE Runtime Environment 1.7.0_25-b17系統:在amd64上運行的Windows 7版本6.1; cp1252; zh_(nb)

清理,構建和重新啟動Netbeans尚未解決問題。 這是可修復的還是Netbeans中的錯誤?

我能夠在NetBeans 7.3.1中重現該問題。 該問題似乎與Bug#224770有關 修復摘要為#224770:使帶有封閉表達式的new處理更類似於vanilla javac,同時保留API的正確輸出。

您有兩個選擇。

  1. 將NetBeans升級到7.4或更高版本。 我在7.4中測試了代碼,它工作正常。
  2. 繼續使用NetBeans 7.3,不要使用“ this.new”。 將第11行更改為:

    B =新的Inner2(){

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM