按照《Spring 3.x企业应用开发实战》中第二章的例子程序,在完成业务层的Service后,在applicationContext.xml中配置事务支持,总是会出现警告:
Exception 'com/swiee/dao/LoginLogDao : Unsupported major.minor version 51.0' applicationContext.xml /forumProj/src line 40 Spring AOP Problem
百度之后发现是由于jdk版本的错误:程序编译的jdk版本比运行时jdk版本更高。我用的MyEclipse2013自带是1.6的jdk,我自己指定的是1.7。且在Preferences中我也指定了默认1.7,BuildPath中也是1.7, Project Facets中也是1.7, 不知道为什么还要报这个warning。
我把Project Facets修改为1.6后,警告消失,难道是加入了Spring3.1的事务处理的原因?检查了一下org.springframework.aop下的Advisor.class,发现
// Compiled from Advisor.java (version 1.5 : 49.0, no super bit)
原来是用jdk1.5编译的版本(如下表)。
在wildfly8上部署后,能正常运行,先暂时这样。
JDK 编译器版本 | target 参数 | 十六进制 minor.major | 十进制 minor.major |
jdk1.1.8 | 不能带 target 参数 | 00 03 00 2D | 45.3 |
jdk1.2.2 | 不带(默认为 -target 1.1) | 00 03 00 2D | 45.3 |
jdk1.2.2 | -target 1.2 | 00 00 00 2E | 46.0 |
jdk1.3.1_19 | 不带(默认为 -target 1.1) | 00 03 00 2D | 45.3 |
jdk1.3.1_19 | -target 1.3 | 00 00 00 2F | 47.0 |
j2sdk1.4.2_10 | 不带(默认为 -target 1.2) | 00 00 00 2E | 46.0 |
j2sdk1.4.2_10 | -target 1.4 | 00 00 00 30 | 48.0 |
jdk1.5.0_11 | 不带(默认为 -target 1.5) | 00 00 00 31 | 49.0 |
jdk1.5.0_11 | -target 1.4 -source 1.4 | 00 00 00 30 | 48.0 |
jdk1.6.0_01 | 不带(默认为 -target 1.6) | 00 00 00 32 | 50.0 |
jdk1.6.0_01 | -target 1.5 | 00 00 00 31 | 49.0 |
jdk1.6.0_01 | -target 1.4 -source 1.4 | 00 00 00 30 | 48.0 |
jdk1.7.0 | 不带(默认为 -target 1.6) | 00 00 00 32 | 50.0 |
jdk1.7.0 | -target 1.7 | 00 00 00 33 | 51.0 |
jdk1.7.0 | -target 1.4 -source 1.4 | 00 00 00 30 | 48.0 |
Apache Harmony 5.0M3 | 不带(默认为 -target 1.2) | 00 00 00 2E | 46.0 |
Apache Harmony 5.0M3 | -target 1.4 | 00 00 00 30 | 48.0 |