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

  • 相关阅读:
    从程序员到项目经理
    wumii 爆款总结经验
    快速的搭建JFinal的ORM框架示例
    Hibernate all-delete-orphan[转]
    HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客
    雷军是如何从程序员蜕变成职业经理人的
    Postgresql数据库数据简单的导入导出
    如何一年看50本好书?
    清除DNS解析缓存
    mysql 下 计算 两点 经纬度 之间的距离
  • 原文地址:https://www.cnblogs.com/Amos-Turing/p/7913026.html
Copyright © 2011-2022 走看看