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

  • 相关阅读:
    网络知识学习系列(一)
    C# 开发系列(三)
    angularJS 系列(三)- 自定义 Service
    添加百度地图,显示定位
    angularJS 系列(二)——理解指令 understanding directives
    angularJS 系列(一)
    hbuilder 手机app开发系列(一)
    vue + 百度地图api
    百度地图api
    canvas的api
  • 原文地址:https://www.cnblogs.com/Amos-Turing/p/7913026.html
Copyright © 2011-2022 走看看