zoukankan      html  css  js  c++  java
  • 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再覆盖到项目中。

    这样,再启动项目就不会出现错误了。

  • 相关阅读:
    BZOJ-1034: [ZJOI2008]泡泡堂BNB (田忌赛马贪心)
    BZOJ-2190: [SDOI2008]仪仗队 (欧拉函数)
    BZOJ-1864: [Zjoi2006]三色二叉树 (julao都说简单的树形DP)
    BZOJ-2657: [Zjoi2012]旅游(journey) (树形DP求最长链)
    BZOJ-2241: [SDOI2011]打地鼠 (模拟+枚举)
    BZOJ-1207: [HNOI2004]打鼹鼠 (LIS类似DP)
    BZOJ-1821: [JSOI2010]Group 部落划分 Group (二分+并查集)
    BZOJ-1218: [HNOI2003]激光炸弹 (前缀和+模拟)
    [SinGuLaRiTy] ZKW线段树
    [SinGuLaRiTy] 字节大小
  • 原文地址:https://www.cnblogs.com/XiOrang/p/13408713.html
Copyright © 2011-2022 走看看