有没有办法在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
我遇到了这个问题,并使用较新版本的 jide 修复了它。从 jide-whatever:3.2.3 更改为 jide-whatever:3.7.6 足以使其在我的情况下工作。
如果你不能迁移到更新的版本,解决方案是围绕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
当您更新 jar 的版本时,可以修复此问题。