今天一位同事在发布一个portlet到ibm portal时报错,于是叫我去帮忙。我们打开日志查看异常,是一个UnsupportedClassVersion错误,还说 Unsupported major.minor version 49.0
我虽然猜到了是class版本不兼容, 大概是用了不对应的jdk编译出不兼容的class导致的。由于was服务器是jdk1.4, 那么我就检查了他用的jdk, 果然用了1.5。
于是换用1.4,重新编译打包, 这下顺利的发布成功了。
事情到这里已经结束了, 不过我还是觉得那个major.minor version 49.0很奇怪,这个class的版本是怎么定的?49难道就是jdk1.5编译的版本号?于是搜索了一下, 还真有相关的资料,不错不错。
这篇文章写的很好,解释的很清楚。
http://www.blogjava.net/Unmi/archive/2007/12/04/165035.html
我前面猜想的jdk1.5编译出的class版本是49也没错,不过并非一定要更换jdk1.4才能搞定以上的问题, javac加上参数-target 1.4 -source 1.4 也是能搞定的。只要保证编译出来的class版本小于或等于was的jvm能支持最高版本即可。
另外还有一个有趣的新发现, 本以为如果服务器限制了jdk1.4,那么我们就不能用jdk1.5写程序了,也就不能用泛型、增强的循环这些特性了, 但这些还真就成了可能的。上文中提到的Retrotranslator 能很好帮助我们做到jdk1.5的代码跑到jdk1.4的jvm上:
http://www.blogjava.net/Unmi/articles/124166.html
有机会去试试看。
分享到:
相关推荐
这里我们讨论的焦点是“JDK1.5环境下编译的jar包在JDK1.4环境下运行”所遇到的问题,具体表现为“Unsupported major.minor version 49.0”的错误。这个错误的根源在于Java字节码版本不兼容。Java字节码版本与JDK版本...
在使用JUnit/StrutsTest时,可能会遇到java.lang.UnsupportedClassVersionError: junit/framework/TestListener (Unsupported major.minor version 49.0)错误。 解决方法:根据JDK版本选择合适的JUnit版本。如果...
其次,如果选择J2EE 1.3进行开发,可能会遇到“Unsupported major.minor version 49.0”的错误,这是由于WebLogic 8不支持JDK 1.5导致的。为了解决这个问题,你可以选择使用JDK 1.4重新编译项目,或者升级WebLogic到...
Unsupported major.minor version 49.0 ``` **错误原因:** 此错误表明Java运行环境与编译时的Java版本不兼容,通常是由于以下原因导致: 1. **编译时使用了较高版本的Java SDK,但运行环境只支持较低版本。** 2....
- WebLogic 8不支持JDK 1.5,因此如果使用JDK 1.5编译的程序尝试部署到WebLogic 8上,会遇到"Unsupported major.minor version 49.0"的错误。解决方案是使用JDK 1.4重新编译代码,或者升级WebLogic到支持JDK 1.5的...
WebLogic 8不支持JDK 1.5,这意味着使用JDK 1.5编译的程序在WebLogic 8上运行时会报"Unsupported major.minor version 49.0"错误。解决此问题的方法是使用JDK 1.4重新编译代码,或者升级WebLogic到9.2版,因为...
2. **JDK版本问题**:WebLogic 8不支持JDK 1.5,这意味着使用JDK 1.5编译的程序无法在WebLogic 8上部署,会报错“Unsupported major.minor version 49.0”。解决方法是要么使用JDK 1.4重新编译,要么升级WebLogic到...
如果使用JDK 1.5编译的程序部署到WebLogic 8,会遇到“Unsupported major.minor version 49.0”的错误。为了解决这个问题,我们需要使用支持JDK 1.5的WebLogic 9.2版本。 #### 四、配置WebLogic 9.2 ##### 安装...