tomcat启动报are only available on JDK 1.5 and higher错误
项目中用的是spring低版本(2.5.6),今天用jre 8测试了一下,发现错误:
Unexpected exception parsing XML document from
class path resource [applicationContext-dao.xml];
nested exception isJava.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,按如下方法处理,可以解决问题。
- 在项目中创建一个package为org.springframework.core
- 在该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;
}
}
}
- 到项目的WEB-INF/classes 下面找到对应的package中的JdkVersion.class文件
- 将项目中的spring-core-2.5.6.jar拷贝出来打开,然后将JdkVersion.class替换jar包中的该文件。
- 将修改后的spring-core-2.5.6.jar再覆盖到项目中。
这样,再启动项目就不会出现错误了。
------------------------------------------------------
命运给予的,无论多少,皆需认真对待。朗如日月,清如水镜
------------------------------------------------------
命运给予的,无论多少,皆需认真对待。朗如日月,清如水镜
------------------------------------------------------