迁移到 java 9 时,反射 API 未抛出此类方法异常
reflection API is throwing no such method exception while migrating to java 9
我正在从 java 8 迁移到 java 9
我正在使用反射从 class 'java.lang.Throwable' 获取方法 'getStackTraceElement(int)'
我将可访问性设置为 "true".
程序适用于 java 8
但是当我迁移到 java 9 时,
它开始因错误而失败
'java.lang.NoSuchMethodException: java.lang.Throwable.getStackTraceElement(int) . '
我的代码在 java 8 中运行良好,如下所示
私有静态方法 m;
'public static void main(String args[])
{
try
{
System.out.println("here1");
//next line throws error
m = Throwable.class.getDeclaredMethod("getStackTraceElement",int.class);
m.setAccessible(true);
System.out.println("here2");
} catch (Exception e) {
//logger.warn(e.getLocalizedMessage(), e);
System.out.println("==>"+e.getLocalizedMessage);
System.out.println("==>"+e.getName);
System.out.println("==>"+e.getStackTraceElement);
System.out.println("here3");
}
}'
他们在 Java 9 中引入了一个 class 专门用于此目的,称为 StackWalker
。
https://docs.oracle.com/javase/9/docs/api/java/lang/StackWalker.html
如果你看一下 Throwable
class java 文档 https://docs.oracle.com/javase/9/docs/api/java/lang/Throwable.html 你会看到 getStackTraceElement
从 class 这就是您收到此错误的原因。
如Demozo所述,使用https://docs.oracle.com/javase/9/docs/api/java/lang/StackWalker.html。
我正在从 java 8 迁移到 java 9 我正在使用反射从 class 'java.lang.Throwable' 获取方法 'getStackTraceElement(int)' 我将可访问性设置为 "true".
程序适用于 java 8 但是当我迁移到 java 9 时, 它开始因错误而失败 'java.lang.NoSuchMethodException: java.lang.Throwable.getStackTraceElement(int) . '
我的代码在 java 8 中运行良好,如下所示 私有静态方法 m;
'public static void main(String args[])
{
try
{
System.out.println("here1");
//next line throws error
m = Throwable.class.getDeclaredMethod("getStackTraceElement",int.class);
m.setAccessible(true);
System.out.println("here2");
} catch (Exception e) {
//logger.warn(e.getLocalizedMessage(), e);
System.out.println("==>"+e.getLocalizedMessage);
System.out.println("==>"+e.getName);
System.out.println("==>"+e.getStackTraceElement);
System.out.println("here3");
}
}'
他们在 Java 9 中引入了一个 class 专门用于此目的,称为 StackWalker
。
https://docs.oracle.com/javase/9/docs/api/java/lang/StackWalker.html
如果你看一下 Throwable
class java 文档 https://docs.oracle.com/javase/9/docs/api/java/lang/Throwable.html 你会看到 getStackTraceElement
从 class 这就是您收到此错误的原因。
如Demozo所述,使用https://docs.oracle.com/javase/9/docs/api/java/lang/StackWalker.html。