spring2.5.6+JDK1.8报错的解决办法 Context namespace element 'annotation-config'或ComponentScan配置 jdk1.5

59 篇文章 0 订阅
55 篇文章 0 订阅

最近系统为了兼容springboot 项目,需升级jdk,为了避免风险暂时不进行spring升级,所以启动idea项目jdk1.8环境时,报jdk版本太低,开始郁闷明明环境使用的是1.8,怎么会报这个错误。后来查看spring2.5.6 版本,在进行获取xml元数据时,namsesapce处理类加载xml配置时会校验配置数据正确性,其中有一项是javaversion 检测,看下面源码:

我一般是在src文件夹加org.springframework.core包,并添加一个JdkVersion.java文件。使注解能够识别jdk8。
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;
    public static final int JAVA_18 = 5;
    private static final String javaVersion = System.getProperty("java.version");
    private static final int majorJavaVersion;

    public JdkVersion()
    {
    }

    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;
    }
    public static boolean isAtLeastJava17()
    {
        return getMajorJavaVersion() >= 4;
    }
    public static boolean isAtLeastJava18()
    {
        return getMajorJavaVersion() >= 5;
    }

    static 
    {
            
    // version String should look like "1.4.2_10"
    if (javaVersion.contains("1.8.")) {
        majorJavaVersion = JAVA_18;         
        System.out.println("JAVA_VERSION: "+javaVersion);
    } 
        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.8的校验,所以问题出在这里,故可以得出一个结论,该版本与jdk1.8不兼容,找到问题思考解决方案:

1.升级spring 版本

2.降低jdk版本

3.重新编译spring jar包,这种有一定风险

4.改变扫描策略,使用xml方式配置类

在这里由于不能升级spring版本,故此使用4方案。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值