JavaFramework-JDK6.jar 放到JDK17运行没有问题
JavaFramework源码放到JDK17环境下编译出来的JavaFramework-JDK17.jar
JavaFramework-JDK17.jar 放到JDK17运行没有问题
JavaFramework-JDK17.jar 放到JDK8运行没有问题,这个好像不对啊,可能之前编译设置version之类
=====于是弄个新环境验证下=====
1)在JDK17新环境新建工程TestClazzVersion,写个公共类T,方法test
2)导出工程
3)生成 TestClazzVersion-JDK17.jar
4) 把导出的 TestClazzVersion-JDK17.jar,放到JDK8的工程里面
5)然后就报错了【java.lang.UnsupportedClassVersionError】
4B1317DE7618D2A2569B1AC95AB1AAA4
Exception in thread "main" java.lang.UnsupportedClassVersionError: a/T has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at zwf.Test.main(Test.java:34)
JDK8 52
JDK11 55(印象中)
JDK17 61
6)拿源代码到JDK8环境编译个新的包吧TestClazzVersion-JDK8.jar,
把旧的TestClazzVersion-JDK17.jar移除,就没啥问题
JAR其实应当分JDK编译版本,吐血,然后低版本有些方法在JDK高版本没有,因为修改过了,其实很坑的;
顺便说下软件架构师,我刚好干过,有个工作内容就是整理这些包里面的东西,包含方法,升级,因此需要会读源代码;