解决AnnotationTransactionAttributeSource is only available on Java 1.5 and highe

本文解决在使用JDK8时遇到的Spring框架兼容性问题,具体表现为AnnotationTransactionAttributeSourceisonlyavailableonJava1.5andhigher错误。通过修改Spring的JdkVersion.java文件,使其兼容JDK8,避免了项目因版本冲突而无法运行的情况。
部署运行你感兴趣的模型镜像

由于项目需要把jdk升级成为了jdk8,在eclipse中导入一个jdk1.6的项目,启动tomcat的时候,报错:

AnnotationTransactionAttributeSource is only available on Java 1.5 and highe

想要解决这个错误,一般有两种办法:

1、将jdk8换成jdk7,重新启动项目就好了(由于另一个项目必须是jdk1.8,所以降版本不现实)。

2、第二种手动修改spring的jar包,在org.springframework.core目录下,有一个JdkVersion.class,自己参照包路径,重新写一个JdkVersion.java,如下所示:


    package org.springframework.core;
     
    public 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;
            }
        }
    }


写好之后,编译成.class文件,放到spring的jar包中,替换项目jar包,重新启动,就好了。

转载于:https://www.cnblogs.com/llfddmm/p/10521113.html

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

uint8_t led_mode =2; // 0=两灯闪烁,1=三灯流水 uint8_t trigger = 0; uint16_t highe = 250; // 初始高电平时长(微秒) uint16_t lowe = 750; // 初始低电平时长(微秒) uint16_t first_key0_flag = 1; uint16_t key0_cnt=0; int main(void) { delay_init(168); LED_Init(); BEEP_Init(); KEY_Init(); EXTIX_Init(); while(1) { LED0 = 1; LED1 = 1; LED2 = 1; // 检测KEY0按下(切换模式) if(KEY0 == 0) { delay_ms(20); // 消抖 if(KEY0 == 0) { key0_cnt++; switch(key0_cnt) { case 1: // 首次按:LED0/1同时闪一次 LED_TwoFlash(); break; case 2: // 第二次按:启动三灯循环闪 key0_cnt = 2; // 锁定计数,避免多按失效 LED_ThreeFlow(); break; } while(KEY0 == 0); // 等待按键释放 } } // KEY1触发特殊效果 if(KEY1 == 0) { delay_ms(20); if(KEY1 == 0) { // 先关闭所有LED LED0 = 1; LED1 = 1; LED2 = 1; // 执行特殊效果:只有LED0亮 + 蜂鸣器 LED0 = 0; // 点亮LED0 BEEP = 1; // 蜂鸣器发声 delay_ms(2000); // 保持2秒 // 2秒后关闭所有LED和蜂鸣器 LED0 = 1; // 熄灭LED0 LED1 = 1; // 确保LED1熄灭 LED2 = 1; // 确保LED2熄灭 BEEP = 0; // 蜂鸣器停止 while(KEY1 == 0); // 等待按键释放 } } if(WK_UP==1) // 检测到WK_UP按下(高电平1有效,与KEY0/KEY1的低电平不同) { delay_ms(3000); // 必须持续按住WK_UP 3秒(中途松开则退出此逻辑) BEEP=1; // 3秒后蜂鸣器持续发声(无关闭逻辑,除非断电或复位) } GPIO_SetBits(GPIOA,GPIO_Pin_11); delay_us(highe); GPIO_ResetBits(GPIOA,GPIO_Pin_11); delay_us(lowe); if(KEY3==0) { highe += 100; lowe -= 100; if (highe > 750) { highe = 250; lowe = 750; } } } }现在的问题是我想要第一次按key0时led0和1不停闪烁,直至按别的键,第二次按key0时不停循环闪烁,但现在的问题是按第一次的时候,led0和1都只闪烁一下,按第二次的时候就循环了一次,怎么改呢
最新发布
11-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值