老框架ssh,使用spring2.5,在java8的环境下报错,提示版本过低,要使用1.5以上的jdk.
java是向下兼容的,问题应该不是出现在jdk上.
后来查看报错原因提示在spring的包里.
然后网上搜了一下,发现是因为有个jdkversion.class的类在spring初始化的时候首先判断了一下jdk的版本,
这个class只判断到了1.7.导致在1.8的环境下,他返回的是else里面的内容,也就是说返回了一个false.
更改jdkVersion.class类,添加部分判断,重新编译放进spring2.5的jar包中,重新运行,启动正常.
附代码:
package org.springframework.core;
public abstract class JdkVersion
{
public static final int JAVA_13 = 0;
public static final int JAVA_14 = 1;
public static final int JAVA_15 = 2;
public static final int JAVA_16 = 3;
public static final int JAVA_17 = 4;
//=====================================这些代码是我新增的内容====start;
public static final int JAVA_18 = 5;
//=====================================这些代码是我新增的内容====end;
//这里是获取到java 的版本;
private static final String javaVersion = System.getProperty("java.version");
private static final int majorJavaVersion;
public static String getJavaVersion()
{
return javaVersion;
}
public static int getMajorJavaVersion()
{
return majorJavaVersion;
}
public static boolean isAtLeastJava14()
{
return true;
}
//如果spring2.5使用的这个方法来做校验那么在java8的环境下,一定是返回一个false;添加一个常亮,使其能够返回true即可;
public static boolean isAtLeastJava15()
{
return getMajorJavaVersion() >= 2;
}
public static boolean isAtLeastJava16()
{
return getMajorJavaVersion() >= 3;
}
//然后这里就可以通过获取到的java 的版本,交给majorJavaVersion;
static
{
if (javaVersion.indexOf("1.7.") != -1) {
majorJavaVersion = 4;
}
else if (javaVersion.indexOf("1.6.") != -1) {
majorJavaVersion = 3;
}
else if (javaVersion.indexOf("1.5.") != -1) {
majorJavaVersion = 2;
}
//=====================================这些代码是我新增的内容====start;
else if (javaVersion.indexOf("1.8.") != -1)
{
majorJavaVersion = 5;
}
//=================================================================end;
else
{
majorJavaVersion = 1;
}
}
}