写了一个简单的demo,就是打印hello world,发现用jdk8加密后的包,只能用jdk8运行,用jdk9加密后的包,也只能用jdk8跑。
否则会报错:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by io.xjar.reflection.XReflection (file:/root/tmp9/encrypted9.jar) to field java.net.URLClassLoader.ucp
WARNING: Please consider reporting this to the maintainers of io.xjar.reflection.XReflection
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make public jdk.internal.loader.Resource jdk.internal.loader.URLClassPath.getResource(java.lang.String) accessible: module java.base does not "exports jdk.internal.loader" to unnamed module @c2e1f26
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:192)
at io.xjar.reflection.XReflection.method(XReflection.java:35)
at io.xjar.jar.XJarClassLoader.(XJarClassLoader.java:41)
at io.xjar.jar.XJarLauncher.launch(XJarLauncher.java:51)
at io.xjar.jar.XJarLauncher.main(XJarLauncher.java:31)
panic: exit status 1
写了一个简单的demo,就是打印hello world,发现用jdk8加密后的包,只能用jdk8运行,用jdk9加密后的包,也只能用jdk8跑。 否则会报错: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by io.xjar.reflection.XReflection (file:/root/tmp9/encrypted9.jar) to field java.net.URLClassLoader.ucp WARNING: Please consider reporting this to the maintainers of io.xjar.reflection.XReflection WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release Exception in thread "main" java.lang.reflect.InaccessibleObjectException: Unable to make public jdk.internal.loader.Resource jdk.internal.loader.URLClassPath.getResource(java.lang.String) accessible: module java.base does not "exports jdk.internal.loader" to unnamed module @c2e1f26 at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:340) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:280) at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:198) at java.base/java.lang.reflect.Method.setAccessible(Method.java:192) at io.xjar.reflection.XReflection.method(XReflection.java:35) at io.xjar.jar.XJarClassLoader.(XJarClassLoader.java:41)
at io.xjar.jar.XJarLauncher.launch(XJarLauncher.java:51)
at io.xjar.jar.XJarLauncher.main(XJarLauncher.java:31)
panic: exit status 1
goroutine 1 [running]: main.main() /root/tmp9/xjar.go:86 +0x630
总结一下:
加密 | 运行 | 是否报错 jdk8 | jdk8 | 否 jdk8 | jdk11|是 jdk9 |jdk9 |是 jdk9|jdk8 |否
我在网上查了下,说是jdk高版本不支持这个方法,大佬看下高版本jdk有没有替换的方法