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,按如下方法處理,可以解決問題。

  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;
        }
    }
}
  1. 到項目的WEB-INF/classes 下面找到對應的package中的JdkVersion.class文件
  2. 將項目中的spring-core-2.5.6.jar拷貝出來打開,然后將JdkVersion.class替換jar包中的該文件。
  3. 將修改后的spring-core-2.5.6.jar再覆蓋到項目中。

這樣,再啟動項目就不會出現錯誤了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM