9、web项目报错总结

1、previously initiated loading for a different type with name "javax/servlet/ServletContext"
错误总结:网上查了下,说是jar包冲突,还有说是servlet-api没有被显示引入,需要排除的。由于三个项目搞到一起,冲突肯定是有的,去掉所有的冲突后还是没有解决问题,随手ctrl+shift+t 搜了一下ServletContext,发现这玩意儿在servlet-api中有,在selenium-server-standalone里也有,于是查了半天,确实有个模块下有selenium-server-standalone,想要exclude,发现没效果,selenium-server-standalone的pom文件中显示没有引用任何包,放弃了。想着那就不引用这个模块了吧,后来发现是可以的。
除了selenium-server-standalone,selenium-java,slf4j-jcl 中都有依赖commons-logging,commons-logging又会依赖servlet-api,好吧,能排除的都排除了。

2、spring的bean容器中找不到某个bean
这次的原因是三个项目整合后,使用了3个spring配置文件,其中两个项目用代码加载配置文件,一个项目是web项目,用web.xml加载配置文件。不管用什么方法都需要同时加载三个文件,由于三个项目既需要同时运行,也有单独运行的,所有加载那块不能写死了,只能用通配符。
网上找到的资料

classpath:   只能加载一个配置文件,如果配置了多个,则只加载第一个
classpath*:  可以加载多个配置文件,如果有多个配置文件,就用这个

于是我的问题就解决啦,
ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:/spring/.xml");

参考:http://heisetoufa.iteye.com/blog/1671306

4、Cannot instantiate class XXX.TestLoginPremium
spring配置文件不见了

5、java.lang.ClassNotFoundException: org.testng.TestNG
testng classpath设置有问题,找不到testng的包

6、mybatis模糊查询报错
org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'xxx' in...

List<Eiinterface> interfaceList = eiinterfaceDao.findByAddress(oldIp);
<select id="findByAddress" parameterType="java.lang.String" resultMap="BaseResultMap">
        SELECT * FROM eiinterface where interfaceaddress like '%${oldIp}%'
</select>

解决办法:
(1) 将string类型换成map类型的,然后将该keyword 放入该map中,不会报错
(2) 在配置文件中直接将keyword换成_parameter

<select id="findByAddress" parameterType="java.lang.String" resultMap="BaseResultMap">
        SELECT * FROM eiinterface where interfaceaddress like '%${_parameter}%'
</select>

7、mybatis批量插入clob内容过大报错
ORA-01461-仅能绑定要插入LONG列的LONG值
之前的批量插入式这么写的

<insert id="insertBatch" parameterType="java.util.List">
    INSERT INTO sterrorlog (errorlogid, resultlogid, errorname, stacktrace,errorstate,errordata,errormsg)
    <foreach collection="list" item="errorlog" index="index" separator="union all" open="(" close=")">
      SELECT #{errorlog.errorlogid},
        #{errorlog.resultlogid},
        #{errorlog.errorname},
        #{errorlog.stacktrace},
        #{errorlog.errorstate},
        #{errorlog.errordata},
        #{errorlog.errormsg} FROM DUAL
    </foreach>
</insert>

其中stacktrace和errormsg是Clob类型的,有可能问题是出现在当从dual中取数据时,会将clob对象的字段转为Long型
于是找到了Begin和end语法

  <insert id="insertBatch" parameterType="java.util.List">
    begin
    <foreach collection="list" item="errorlog" index="index" separator=";">
      insert into sterrorlog(errorlogid, resultlogid, errorname, stacktrace,errorstate,errordata,errormsg,pid,configmethodflag)
      values( #{errorlog.errorlogid}, #{errorlog.resultlogid},  #{errorlog.errorname},  #{errorlog.stacktrace}, #{errorlog.errorstate},
      #{errorlog.errordata}, #{errorlog.errormsg}, #{errorlog.pid}, #{errorlog.configmethodflag})
    </foreach>
    ;end;
  </insert>

8、mybatis插入java.util.Date到oracle java.sql.Date类型中日期没有时分秒
mybatis generator生成代码默认jdbcType为Date类型,改成TIMESTAMP类型就好了。resultMap和insert插入语句中都需要修改。

排除法是个找错的好方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,896评论 18 139
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,596评论 0 4
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,947评论 6 342
  • 忽然降温,大降温。
    10086好阅读 185评论 0 0
  • 最近读了伍绮诗的《无声告白》,感悟很深。 这是一部描写冲突的小说。包括种族冲突,家庭冲突,夫妻冲突,亲子冲突等等,...
    活着是为了讲述01阅读 249评论 0 4