《轉載》 解決AnnotationTransactionAttributeSource is only available on Java 1.5 and highe

參考文獻:

https://www.cnblogs.com/llfddmm/p/10521113.html


https://stackoverflow.com/questions/33891697/annotationawareaspectjautoproxycreator-is-only-available-on-java-1-5-and-higher


https://stackoverflow.com/questions/23813369/spring-java-error-namespace-element-annotation-config-on-jdk-1-5-and-high/32487035#32487035

 

情景描述:

運維的老項目,使用spring2.5 和 jdk1.7,但是在部署時,由於是和另一個已有項目使用同一臺服務器,所以必須使用 jdk1.8。

在tomcat上部署該項目時報錯:

AnnotationTransactionAttributeSource is only available on Java 1.5 and highe

出現該問題,主要是對xml文件中的      <aop:aspectj-autoproxy />  處理時出現了問題。

針對該問題的解決方案包括:

(1)將jdk版本由  jdk1.8 換爲 jdk1.7;

(2)將項目的spring版本,由spring2.5  升級爲 spring4;

(3)手動修改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包,重新啓動,就好了。

 

 

基於我的情況,選擇了第(3)中解決方案,替換spring-core.jar之後,問題解決。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章