月度归档:2017年02月

记一次使用高版本jdk接口被坑的经历

最近在一个项目中,使用了一个jdk1.8才有支持的方法:List.sort,开发的时候没有发现注释那写着“since 1.8”,然后打包,发布了。而线上的环境用的是1.7!!!所以在线上访问含有用到这个高版本接口的逻辑的api时,就报500错误了。
我的开发工具是eclipse,本机的jdk版本是1.8,项目是用maven打包的,并且打包时jdk版本设置为1.6。
后来经过研究,发现以下3种情况:

  • 在preference->java->install jres中,将Java se 7选中的话,代码直接报错了。应该是直接改变了整个工作空间的运行环境版本,所以有正确的检验。
    WechatIMG27
  • 如果不改installed jres,而是将server中的运行环境,则会在运行时报error(是error,不是异常)。 通过这样,就可以在本地测试时发现问题了。
    WechatIMG47
    WechatIMG48

  • 改项目的编译版本不起作用,还不知道为什么。

所以后面做项目,看来不仅要将编译等级改成和线上的一致,同时还要将installed jres中改成相同的版本或在server使用的运行环境中设置