理解Unsupported major.minor version 49.0为何错误

今天一位同事在发布一个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编译的版本号?于是搜索了一下, 还真有相关的资料,不错不错。
这篇文章写的很好,解释的很清楚。
[url]http://www.blogjava.net/Unmi/archive/2007/12/04/165035.html[/url]
我前面猜想的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上:
[url]http://www.blogjava.net/Unmi/articles/124166.html[/url]
有机会去试试看。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值