Java踩坑记录 --含各种报错信息

这里记录了踩过的坑,推荐Ctrl+F报错信息

    • junit 单元测试报错
      • 场景:引入junit-4.12.jar后,调用@Test时出错
    • Nginx轮询失效
      • 场景:明明设置了轮询策略,但浏览器还是只能访问同一个Tomcat
    • String转Date出错
      • 场景:明明时间格式都对上了,还是解析(format.parse)出错
      • 场景:使用New date(String)转换时间时,时间的判断逻辑出错


junit 单元测试报错

场景:引入junit-4.12.jar后,调用@Test时出错

java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
>解决: 改引入低版本的就行了,比如引入junit4.10.jar

原因:貌似4.11以上版本不在包含hamcrest。详细参考下面文章,说的很详细了。

https://blog.csdn.net/u011954243/article/details/77962329


Nginx轮询失效

场景:明明设置了轮询策略,但浏览器还是只能访问同一个Tomcat

解决思路:F12调出浏览器的调式页面,在Network的Tab页里,看一下请求信息。如果有favicon.ico这个请求,下面的方法就可以解决问题。

解决:在Nginx配置文件中,server块中添加如下代码,之后nginx -s reload就好了

location /favicon.ico {
        }

原因:貌似谷歌浏览器会把标签页的小图标也当作请求一起发送,favicon.ico就是指的这个小图标

再详细的,就看一下这个文章吧

https://bbs.csdn.net/topics/393650853


String转Date出错

场景:明明时间格式都对上了,还是解析(format.parse)出错

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.ENGLISH);
Date date = null;
date = format.parse(time);//time:String类型,内容是我们想转的字符串

>解决:除了时间格式要匹配外,后面的locale也指定一下,就会解析成功

原因:我记得好像有很多国家的时间格式,如果不能判断是哪个国家类型的时间,就会不能解析。(另外,本例为默认时间格式,方便不想研究时间格式的小伙伴们)


场景:使用New date(String)转换时间时,时间的判断逻辑出错

Date date = new Date(time);//time:String类型,内容是我们想转的字符串
解决:利用format.parse(time)来转换时间

原因:根据我debug的结果,发现new Date(time)不能正确转换时间,所以会导致正确的逻辑判断也会出错。

你可能感兴趣的:(都是坑)