2

有没有办法在 OpenJDK11 中使用 sun.reflect,可能在“--add-exports”中添加一些东西?我们的代码失败了,因为 jide pkg 内部使用了 sun.reflect 包,我正在尝试看看是否有办法让它工作。

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

“--add-exports jdk.unsupported/sun.reflect=ALL-UNNAMED”

这是一个例外,基础类引用sun.reflect.Reflection

java.lang.NoClassDefFoundError: sun/reflect/Reflection
4

3 回答 3

1

我遇到了这个问题,并通过使用更新版本的 jide 解决了这个问题。从 jide-whatever:3.2.3 更改为 jide-whatever:3.7.6 足以让它在我的情况下工作。

于 2020-06-19T19:28:24.683 回答
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

于 2021-02-04T12:46:58.830 回答
0

可以在更新 jar 版本时修复它。

于 2021-12-01T12:26:50.930 回答