zoukankan      html  css  js  c++  java
  • Spring/Java error: namespace element 'annotation-config' … on JDK 1.5 and higher

    Extract the jar file:

    mkdir spring
    cd spring
    jar xvf ../spring.jar
    

    Check the Spring version in META-INF/MANIFEST.MF (you should see something like version=2.5.5). Look up the appropriate version of JdkVersion.java and use that as a starting point (the example below is for Spring 2.5.5 and you don't want to change any method signatures from the version you're working with).

    Check the major and minor version of the JdkVersion.class file:

    javap -verbose org/springframework/core/JdkVersion.class

    We see that the class was original compiled as target 48.0 (looking this up, we find that is Java 1.4):

    Classfile /tmp/spring/org/springframework/core/JdkVersion.class
      Last modified Jun 23, 2008; size 1286 bytes
      MD5 checksum 98e6ea08ce9186c50cc71d14465fc3dd
      Compiled from "JdkVersion.java"
    public abstract class org.springframework.core.JdkVersion
      minor version: 0
      major version: 48
      flags: ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
    Constant pool:
    ...
    

    Create org/springframework/core/JdkVersion.java with the following content:

    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;
    
        private static final String javaVersion;
        private static final int majorJavaVersion;
    
        static
        {
            javaVersion = System.getProperty("java.version");
    
            if (javaVersion.indexOf("1.7.") != -1)
            {
                majorJavaVersion = JAVA_17;
            } else if (javaVersion.indexOf("1.6.") != -1) {
                majorJavaVersion = JAVA_16;
            } else if (javaVersion.indexOf("1.5.") != -1) {
                majorJavaVersion = JAVA_15;
            } else if (javaVersion.indexOf("1.4.") != -1) { // new
                majorJavaVersion = JAVA_14;                 // new
            } else {
                majorJavaVersion = JAVA_17;                 // changed from JAVA_14
            }
        }
    
        public static String getJavaVersion()
        {
            return javaVersion;
        }
    
        public static int getMajorJavaVersion()
        {
            return majorJavaVersion;
        }
    
        public static boolean isAtLeastJava14()
        {
            return true;
        }
    
        public static boolean isAtLeastJava15()
        {
            return getMajorJavaVersion() >= JAVA_15;
        }
    
        public static boolean isAtLeastJava16()
        {
            return getMajorJavaVersion() >= JAVA_16;
        }
    }
    

    Then compile the new class as Java 1.4:

    javac -source 1.4 org/springframework/core/JdkVersion.java

    You can check the major.minor version again as above if needed.

    Create the modified jar file (without overwriting the original manifest):

    jar Mcf ../spring-modified.jar *

    Copy the modified jar file where needed (as spring.jar or as appropriate).

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

  • 相关阅读:
    flex 遍历Object或者JSON对象内容的实现代码
    Flex Vector使用(转)
    Flex——Array,ArrayCollection,Vector性能比较(转)
    SQLSERVER远程备份、恢复(转)
    隐藏Jquery dialog 按钮
    GSM 短信相关AT指令(转)
    SQL Server 父子迭代查询语句,树状查询(转)
    js framework comparation
    eventEmitter
    调试 shell script 方法
  • 原文地址:https://www.cnblogs.com/Amos-Turing/p/7913026.html
Copyright © 2011-2022 走看看