在openjdk11中使用sun.reflect软件包

时间:2019-09-25 18:25:29

标签: java-11 openjdk-11

是否可以通过在“ --add-exports”中添加某些内容来在OpenJDK11中使用sun.reflect?由于jide pkg内部使用sun.reflect包,所以我们的代码失败了,我正在尝试查看是否有使其工作的方法。

我已经尝试过以下方法,但这无济于事。

  

“ ----添加导出jdk.unsupport / sun.reflect = ALL-UNNAMED”

例外,基础类引用 sun.reflect.Reflection

java.lang.NoClassDefFoundError: sun/reflect/Reflection

2 个答案:

答案 0 :(得分:1)

我遇到了这个问题,并使用较新版本的jide进行了修复。从jide-whatever:3.2.3更改为jide-whatever:3.7.6足以使其在我的情况下起作用。

答案 1 :(得分:0)

如果你不能迁移到更新的版本,解决方案是在 Throwable().getStackTrace()[n].getClass() 周围做一个包装并将它放在 WEB-INF/classes 文件夹中

这是一个简单的解决方法。它适用于许多情况。

package sun.reflect;
public class Reflection {
        public static Class<?> getCallerClass(int n){
            StackTraceElement[] elements = new Throwable().getStackTrace();
              return elements[n].getClass() ;
            }
}

https://github.com/rafaljot/NoClassDefFoundError-sun-reflect-Reflection