本文主要是介绍…… are only available on JDK 1.5 and higher 错误(spring 的jdk版本检测在jdk 8下的修订)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
项目中用的是spring低版本(2.5.6),今天用jre 8测试了一下,发现错误:
Unexpected exception parsing XML document from class path resource [applicationContext-dao.xml]; nested exception is java.lang.IllegalStateException: Context namespace element ‘annotation-config’ and its parser class [org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser] are only available on JDK 1.5 and higher
看源码是org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser自动检测,jdk版本检测时需要jre1.5以上版本,但是JdkVersion只检查到了1.7,jre1.8 时不匹配任何jdk,按如下方法处理,可以解决问题。
1、在项目中创建一个package为org.springframework.core
2、在该package下面新建JdkVersion.java,内容如下:
-
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; -
//for jre 1.8 -
public static final int JAVA_18 = 5; -
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; -
} -
public static boolean isAtLeastJava15() { -
return getMajorJavaVersion() >= 2; -
} -
public static boolean isAtLeastJava16() { -
return getMajorJavaVersion() >= 3; -
} -
static { -
//for jre 1.8 -
if (javaVersion.indexOf("1.8.") != -1) { -
majorJavaVersion = 5; -
}else 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; -
} else { -
majorJavaVersion = 1; -
} -
} -
}
3、到项目的WEB-INF/classes 下面找到对应的package中的JdkVersion.class文件
4、将项目中的spring-core-2.5.6.jar拷贝出来打开,然后将JdkVersion.class替换jar包中的该文件。
5、将修改后的spring-core-2.5.6.jar再覆盖到项目中。
这样,再启动项目就不会出现错误了。
这篇关于…… are only available on JDK 1.5 and higher 错误(spring 的jdk版本检测在jdk 8下的修订)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!