Spring2.5与JDK8的集成问题

Spring2.5不支持JDK8及其以上的版本,因为有一段校验JDK版本的代码,当JDK版本大于1.7之后,会识别成JDK1.4之前的。会报版本太低的错误。

  1 /*
  2  * Copyright 2002-2007 the original author or authors.
  3  *
  4  * Licensed under the Apache License, Version 2.0 (the "License");
  5  * you may not use this file except in compliance with the License.
  6  * You may obtain a copy of the License at
  7  *
  8  *      http://www.apache.org/licenses/LICENSE-2.0
  9  *
 10  * Unless required by applicable law or agreed to in writing, software
 11  * distributed under the License is distributed on an "AS IS" BASIS,
 12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  * See the License for the specific language governing permissions and
 14  * limitations under the License.
 15  */
 16
 17 package org.springframework.core;
 18
 19 /**
 20  * Internal helper class used to find the Java/JDK version
 21  * that Spring is operating on, to allow for automatically
 22  * adapting to the present platform‘s capabilities.
 23  *
 24  * <p>Note that Spring requires JVM 1.4 or higher, as of Spring 2.5.
 25  *
 26  * @author Rod Johnson
 27  * @author Juergen Hoeller
 28  * @author Rick Evans
 29  */
 30 public abstract class JdkVersion {
 31
 32     /**
 33      * Constant identifying the 1.3.x JVM (JDK 1.3).
 34      */
 35     public static final int JAVA_13 = 0;
 36
 37     /**
 38      * Constant identifying the 1.4.x JVM (J2SE 1.4).
 39      */
 40     public static final int JAVA_14 = 1;
 41
 42     /**
 43      * Constant identifying the 1.5 JVM (Java 5).
 44      */
 45     public static final int JAVA_15 = 2;
 46
 47     /**
 48      * Constant identifying the 1.6 JVM (Java 6).
 49      */
 50     public static final int JAVA_16 = 3;
 51
 52     /**
 53      * Constant identifying the 1.7 JVM (Java 7).
 54      */
 55     public static final int JAVA_17 = 4;
 56     public static final int JAVA_18 = 4;
 57
 58
 59     private static final String javaVersion;
 60
 61     private static final int majorJavaVersion;
 62
 63     static {
 64         javaVersion = System.getProperty("java.version");
 65         // version String should look like "1.4.2_10"
 66         if(javaVersion.indexOf("1.8.") != -1){
 67             majorJavaVersion = JAVA_18;
 68         }else if (javaVersion.indexOf("1.7.") != -1) {
 69             majorJavaVersion = JAVA_17;
 70         }
 71         else if (javaVersion.indexOf("1.6.") != -1) {
 72             majorJavaVersion = JAVA_16;
 73         }
 74         else if (javaVersion.indexOf("1.5.") != -1) {
 75             majorJavaVersion = JAVA_15;
 76         }
 77         else {
 78             // else leave 1.4 as default (it‘s either 1.4 or unknown)
 79             majorJavaVersion = JAVA_14;
 80         }
 81     }
 82
 83
 84     /**
 85      * Return the full Java version string, as returned by
 86      * <code>System.getProperty("java.version")</code>.
 87      * @return the full Java version string
 88      * @see System#getProperty(String)
 89      */
 90     public static String getJavaVersion() {
 91         return javaVersion;
 92     }
 93
 94     /**
 95      * Get the major version code. This means we can do things like
 96      * <code>if (getMajorJavaVersion() < JAVA_14)</code>.
 97      * @return a code comparable to the JAVA_XX codes in this class
 98      * @see #JAVA_13
 99      * @see #JAVA_14
100      * @see #JAVA_15
101      * @see #JAVA_16
102      * @see #JAVA_17
103      */
104     public static int getMajorJavaVersion() {
105         return majorJavaVersion;
106     }
107
108     /**
109      * Convenience method to determine if the current JVM is at least Java 1.4.
110      * @return <code>true</code> if the current JVM is at least Java 1.4
111      * @see #getMajorJavaVersion()
112      * @see #JAVA_14
113      * @see #JAVA_15
114      * @see #JAVA_16
115      * @see #JAVA_17
116      */
117     public static boolean isAtLeastJava14() {
118         return true;
119     }
120
121     /**
122      * Convenience method to determine if the current JVM is at least
123      * Java 1.5 (Java 5).
124      * @return <code>true</code> if the current JVM is at least Java 1.5
125      * @see #getMajorJavaVersion()
126      * @see #JAVA_15
127      * @see #JAVA_16
128      * @see #JAVA_17
129      */
130     public static boolean isAtLeastJava15() {
131         return getMajorJavaVersion() >= JAVA_15;
132     }
133
134     /**
135      * Convenience method to determine if the current JVM is at least
136      * Java 1.6 (Java 6).
137      * @return <code>true</code> if the current JVM is at least Java 1.6
138      * @see #getMajorJavaVersion()
139      * @see #JAVA_16
140      * @see #JAVA_17
141      */
142     public static boolean isAtLeastJava16() {
143         return getMajorJavaVersion() >= JAVA_16;
144     }
145
146 }

将相关的类文件打开源码,修改成如上的代码,编译后,替换jar包中的class文件即可

时间: 2024-10-05 23:37:01

Spring2.5与JDK8的集成问题的相关文章

Spring2.0集成Quartz1.5.2调度框架

Quartz是个开放源码项目,提供了丰富的作业调度集.希望您在阅读完本文并看过代码演示后,可以把Quartz的基本特性应用到任何Java™应用程序中.现代的Web应用程序框架在范围和复杂性方面都有所发展,应用程序的每个底层组件也必须相应地发展.作业调度是现代系统中对Java应用程序的一般要求,而且也是对Java开发人员一贯的要求.虽然目前的调度技术比起原始的数据库触发器标志和独立的调度器线程来说,已经发展了许多,但是作业调度仍然不是个小问题.对这个问题最合适的解决方案就是来自OpenSympho

任务调度器quartz的使用

1.quartz的获取. 可參照:Quartz任务调度模型实例 2.开发思路: 要使用定时器quartz.先弄清楚三个概念:调度器.任务.触发器.开发也是依照这三个方面来开发, 1>写一个Job的实现类.里面是你自己要完毕的业务逻辑: 2>写Trigger的实现类,主要有SimpleTrigger和CronTrigger这两个子类.来决定调度方案: 当仅需触发一次或者以固定时间间隔周期运行,SimpleTrigger是最适合的选择: 而CronTrigger则能够通过Cron表达式定义出各种复

Struts1 Spring2 iBatis2 框架的集成

这个是属于比较老的框架了,奈何现在公司用的产品就是如此,闲来就搭一个集成框架吧 依赖jar包 antlr-2.7.6.jar aspectj-1.8.2.jar aspectjrt.jar aspectjweaver-1.6.12.jar bsf-2.3.0.jar cglib-nodep-2.1_3.jar commons-beanutils-1.8.0.jar commons-dbcp-1.4.jar commons-digester-2.0.jar commons-fileupload-1

ibatis 开发中的经验 (三)ibatis与spring2集成配置

ibatis项目中用到了一些基本配置,需要和spring集成,看了看这些配置大部分同hibernate中是一样的,也比较好理解,只是需要他们的配置中每个类的含义,还有其中的一些细节还是需要我们了解的,知识不在多,而在不断吸收和重复,在使用和练习中加深对各种问题的理解. 读取属性文件配置 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceho

Spring2集成iBatis2

从数据库中查询一条记录,演示Spring与iBatis的集成 1 编写sqlmaps与Domain对象 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd"> <!--

【转】ConcurrentHashMap完全解析(JDK6/7、JDK8)

转自http://my.oschina.net/hosee/blog/675884 并发编程实践中,ConcurrentHashMap是一个经常被使用的数据结构,相比于Hashtable以及Collections.synchronizedMap(),ConcurrentHashMap在线程安全的基础上提供了更好的写并发能力,但同时降低了对读一致性的要求(这点好像CAP理论啊 O(∩_∩)O).ConcurrentHashMap的设计与实现非常精巧,大量的利用了volatile,final,CAS

在Spring3 MVC中五步配置集成注解方式Hibernate3

最近在搞一个WEB项目,以前在公司做项目用的都是JPA做ORM持久层,这次这个项目是我自己接的,我决定改一下,用Hibernate3来做ORM持久层.于是我网上搜索了Hibernate3怎么配置集成到Spring3 MVC上,发现千奇百怪,而且很多都是不是基于注解方式配置,显然那些文字上面的配置方式已经跟如今的Hibernate3注解支持方式脱节了,于是我决定自己搞一把,首先说一下网上那些配置方式的不好的地方,很多文章都提到要jdbc.properties文件与Hibernate config文

struts2.1.8 spring2.5.6 hibernate3.3G 依赖jar包

----struts2.1.8---- struts2-core-2.1.8.1.jar struts2核心包 struts2-json-plugin-2.1.8.1.jar struts2的json插件--var s = {name:"zhangs",age:"18"} struts2-spring-plugin-2.1.8.1.jar 与spring集成插件 xwork-core-2.1.6.jar struts2的构建基础jar struts2-convent

[原创]Axis2与ActiveMQ集成配置

本文详细介绍了axis2集成jms中间件ActiveMQ的全过程,参考部分网络资料进行整理. 1       ActiveMQ安装及配置 1.1   ActiveMQ简介 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现 1.2   ActiveMQ特性 1)多种语言和协议编写客户端.语言: Java, C, C++, C#, Ruby, Perl, Python, PHP.应用协议: OpenWi