Игра с Java (v9 специально) Я нашел эту ситуацию:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
interface A {
static A staticMethod() {
try {
Method method = A.class.getDeclaredMethods()[0];
return (A) method.invoke(null);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
public class Test {
public static void main(String[] args) {
A.staticMethod();
}
}
Этот поток программы должен вызывать ошибку StackOverflow, однако я получаю NoClassDefFoundError
.
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 880
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 880
*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 880
Exception in thread "main"
Exception: java.lang.NoClassDefFoundError thrown from the UncaughtExceptionHandler in thread "main"
Согласно Javadoc
Класс NoClassDefFoundError
Брошено, если виртуальная машина Java или экземпляр ClassLoader пытается загрузить в определении класса (как часть обычного вызова метода или как часть создания нового экземпляра с использованием нового выражения) и нет определения класс можно найти.
Искаженное определение класса существовало при компиляции текущего исполняемого класса , но определение больше не может быть найдено.
Это странное сообщение об ошибке, это ошибка?
ОБНОВЛЕНИЕ: Идентификатор отчета об ошибке: 9052375
Выполняется из командной строки и печатает ожидаемую ошибку:
Проблема заключалась в том, что исключения использовались в catch
.