Spring Tool Suite(简称STS)是 Spring 团队开发的一款基于Eclipse的IDE,旨在简化开发Spring MVC 应用的流程。可以自动生成spring相关的配置文件。比如applicationContext.xml文件等。但是近来使用 Calendar日历类进行比较日期时,发现before、after函数不能输出预期的结果,于是逐一翻看Calendar源码:

public boolean before(Object when) {

return when instanceof Calendar
            && compareTo((Calendar)when) < 0;

}

但是还是没留意到 when instanceof Calendar 这条code。最后决定使用最底层的逻辑:比较getTimeInMillis 。带回家再找原因。

后来翻看API文档才注意到当且仅当 when 是Calendar实例时才会返回true。

但是这中间暴露了STS的一个bug。测试代码如:

@Test
    public void testCalendar(){
        String pattern1 = "YYYY-MM-dd";
        String pattern2 = "yyyy-MM-dd";

SimpleDateFormat format = new SimpleDateFormat(pattern1);
        Date theD = null ;
        try {
            theD = format.parse("2013-10-10");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar theC = Calendar.getInstance() ;
        theC.setTime(theD);
        Calendar now = Calendar.getInstance() ;
        System.out.println("theC : "+theC.getTime());
        System.out.println("theC : "+theC.getTimeInMillis());
        System.out.println("new : "+now.getTime());
        System.out.println("new : "+now.getTimeInMillis());
        System.out.println("new is before theC : "+now.before(theC));
    }

正确情况下赢输出:

theC : Wed Jan 10 00:10:00 CST 3
theC : -62071948200000
new : Tue Sep 10 22:22:15 CST 2013
new : 1378822935807
new is before theC : false

但是实际情况确实

theC : Sun Dec 30 00:00:00 CST 2012
theC : 1356796800000
new : Tue Sep 10 22:31:28 CST 2013
new : 1378823488012
new is before theC : false
可以看到 theC变成了 2012年10月30号

不论吧pase函数内的实参修改成何值最后输出的都是 10月30号。无果,之后更换IDE。打开传统的myEclipse,Ctrl+C复制黏贴代码。奇迹出现:

直接抛出java.lang.IllegalArgumentException: Illegal pattern character 'Y',原来pattern1格式错误应为pattern2.但是万恶的STS竟然没有抛出任何异常,直接默认为了10月30号。

看了成熟IDE环境很重要啊。。。

Spring Tool Suite(简称STS)针对SimpleDateFormat.pase函数的实参值不做检验,异常直接默认值之的更多相关文章

  1. Spring Tool Suite(STS)启动时出现错误:Java was started but returned exit code=13问题解决

    Spring Tool Suite(STS)是开发Spring的套件,也就是一个Eclipse,在之上增加了对Spring框架的支持,使其能快速的开发Spring. 错误如下: 解决办法: 如果系统安 ...

  2. 安装Spring Tool Suite(STS)

    JAVA开发工具中,常用工具就是Eclipse,IntelliJ IDEA. 现在使用spring boot&cloud框架进行开发的时候,虽然可以使用上面两个工具,但都未必就真的量身定制,I ...

  3. 【Java架构:基础技术】一篇文章搞掂:Spring Tool Suite(STS)

    1.简介 STS,是一个自定义版本的Eclipse,她可以方便地用来与各种Spring项目进行交互协作,建议采用Spring进行开发的时候,可以尝试使用这个IDE 2.下载与安装 登录https:// ...

  4. 使用Spring Tool Suite (STS)新的工作空间无需再配置

    在你的新的工作空间中找到比如 F:\java-wokespace\你的新的工作空间名称\.metadata\.plugins\org.eclipse.core.runtime\.settings 找到 ...

  5. spring的IDE:STS (Spring Tool Suite)

    STS 比 eclipse 新增的内容: 在 New =>Other... 中新增了 Spring 文件夹,里面新增了 Spring Legacy Project 和 Spring Starte ...

  6. Spring MVC -- Spring Tool Suite和Maven(安装Tomcat、JDK)

    Spring提供了自己的集成开发环境(IDE),称为Spring Tool Suite(STS),它可能是构建Spring应用程序的最佳IDE了.STS捆绑了Maven作为其默认依赖管理工具,因此不需 ...

  7. Spring Tool Suite(STS)安装

    Spring Tool Suite是一个基于Eclipse的开发环境,可以自定义用于开发Spring应用程序.它提供了一个随时可用的环境来实现,调试,运行和部署Spring应用程序,包括Pivotal ...

  8. Eclipse 下Spring cloud项目集成开发插件Spring Tool Suite (STS) 安装

    安装eclipse插件 Help->Eclipse Marketplace-> Search中查找"Spring Tool Suite (STS) for Eclipse&quo ...

  9. 使用spring tool suite(STS)工具创建spring boot项目和出现错误后的处理

    一.先下载配置maven环境 1.下载地址:http://maven.apache.org/download.cgi windows下下载zip文件 2.解压后放到某个文件目录下 3.配置环境变量 ( ...

随机推荐

  1. .vimrc快捷键设置

    $ cat ~/.vimrc,centos7是在/etc/vimrc文件中配置. nmap <C-_>s :cs find s <C-R>=expand("<c ...

  2. linux下的压缩解压命令 tar 的简单描述

    命令名称:tar 命令所在路径:/bin/tar 语法:tar选项·「-zcf」·「压缩后文件名」「目录」 -c 打包 -v 显示详细信息 -f 指定文件名 -z 打包同时压缩 tar命令解压缩语法: ...

  3. Cocos2d-x 精灵碰撞检測(方法二)

    将"Cocos2d-x 精灵碰撞检測(方法一)" update函数改动一下. 使用精灵boundingBox函数获取直接精灵边界框, 不用自己计算精灵矩形大小了,还比較精确,然后调 ...

  4. Android:源码环境编译自定义的APP到ROM(System Image)中

    有时候我们需要在源码环境中增加自己的应用或模块,随ROM一起发布. 下面讲述相关步骤: 1. 首先可以在SDK环境下进行编码设计(如果你的APP不涉及到emulator无法模拟的硬件的话) 也可以参考 ...

  5. CodeForces 508C Anya and Ghosts 贪心

    做不出题目,只能怪自己不认真 题目: Click here 题意: 给你3个数m,t,r分别表示鬼的数量,每只蜡烛持续燃烧的时间,每个鬼来时要至少亮着的蜡烛数量,接下来m个数分别表示每个鬼来的时间点( ...

  6. vim下设置tab

    前言:大多数情况下tab键的宽度设置为4个空格,这个可以根据自己 的代码风格进行替换,然而当你提交不同的语言的代码的时候python 和c的时候就有区别了.c的话一般tab键做缩进,而python提交 ...

  7. 2057 A + B Again

    A + B Again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...

  8. BZOJ 3282: Tree( LCT )

    LCT.. -------------------------------------------------------------------------------- #include<c ...

  9. ZOJ 3211 Dream City DP 01背包 经典问题

    题目大意:JAVAMAN 到梦幻城市旅游见到了黄金树,黄金树上每天回结出金子.已经有n棵树,JAVAMAN要停留m天,每天只能砍掉一棵树,砍掉树后就能得到树上的黄金.给定n棵树上原有的黄金a[i]和每 ...

  10. ORACLE存储过程笔记3

    ORACLE存储过程笔记3 流程控制 1.条件   if expression thenpl/sql or sqlend if;   if expression thenpl/sql or sqlel ...