Когда я пытаюсь создать новый анонимный подкласс Action внутри инициализации анонимного подкласса содержащего его класса, содержащего класс, Netbeans внезапно не может найти основной класс при запуске, несмотря на то, что может без проблем очищать + строить и работать с этим код закомментирован.
Структура кода:
Основной пакет:
- Main class <-- currently looking at this file
- public void run(...) (called in main(String[] args))
- Actor a = new Actor() {
- Script script = new Script();
- { (Actor instance initiation code)
- script.new Action(0) {...} causes breakage
- Actor a = new Actor() {
- public void run(...) (called in main(String[] args))
- Package actor
- public abstract class Actor
- public class Script
- public abstract class Action
- public class Script
- public abstract class Actor
Воспроизведено в простом классе:
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
Версия продукта: IDE NetBeans 7.3.1 (сборка 201306052037) Java: 1.7.0_25; Java HotSpot(TM) 64-битный сервер VM 23.25-b01 Среда выполнения: Java(TM) SE Runtime Environment 1.7.0_25-b17 Система: Windows 7 версии 6.1, работающая на amd64; СР1252; en_US (примечание)
Очистка, сборка и перезапуск Netbeans не решили проблему. Это поправимо или ошибка в Netbeans?
javac
. Ради интереса, можете ли вы найти скомпилированные.class
файлы? Можете ли вы запустить его из командной строки без каких-либо проблем? - person Jon Skeet   schedule 19.12.2014public static void main(String[] args)
. Я не видел упомянутого основного метода. - person Joop Eggen   schedule 19.12.2014