当我尝试在其包含类的类的匿名子类的初始化内创建一个新的匿名Action子类时,Netbeans突然无法在运行时找到主类,尽管能够清理+构建没有问题,并使用此代码运行注释掉。
代码结构:
主要包裹:
在一个简单的类中复制:
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中的错误?
答案 0 :(得分:1)
我能够在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.3,并且不要使用" this.new"。将第11行更改为:
B = new Inner2(){