编程语言
首页 > 编程语言> > java – 在创建匿名子类的内部类的匿名子类时,Netbeans无法找到主类

java – 在创建匿名子类的内部类的匿名子类时,Netbeans无法找到主类

作者:互联网

当我尝试在其包含类的包含类的匿名子类的初始化内创建一个新的匿名Action子类时,Netbeans突然无法在运行时找到主类,尽管能够毫无问题地清理构建并运行此代码评论说.

代码结构:

主要包装:

>主类< - 目前正在查看此文件
> public void run(…)(在main(String [] args中调用))

>演员a =新演员(){

> Script script = new Script();
> {(演员实例启动代码)

> script.new Action(0){…}导致破损

>包装演员

>公共抽象类Actor

>公共类脚本

>公共抽象类Action

复制在一个简单的类中:

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运行时环境1.7.0_25-b17
系统:在amd64上运行的Windows 7版本6.1; CP1252; en_US(nb)

清理,构建和重新启动Netbeans还没有解决问题.这是可修复的还是Netbeans中的错误?

解决方法:

我能够在NetBeans 7.3.1中重现该问题.该问题似乎与bug #224770有关.修复摘要为#224770: making handling of new with enclosing expression more similar to vanilla javac, while preserving the correct outputs from the API.

你有两个选择.

>将NetBeans升级到7.4或更高版本.我在7.4中测试了代码,它运行正常.
>继续使用NetBeans 7.3,不要使用“this.new”.将第11行更改为:

B = new Inner2(){

标签:java,inner-classes,netbeans,anonymous-class,anonymous-inner-class
来源: https://codeday.me/bug/20190708/1402498.html