异常集锦

异常集锦

在写代码的时候出现过很多的异常( 针对一些不能即时查询出来的情况 ),现在把它们一一整理出来,以后再次出现的时候可以有地方可查。

Hibernate异常

BatchUpdateException

Caused by: java.sql.BatchUpdateException: You have an error in your SQL syntax; check the manual tha

解决:

使用了数据库的关键字index,如果有类似的错误,看看自己有没有使用关键字!

异常集锦

MySQLSyntaxErrorException

编写第一个Hibernate程序的时候,就发现出现了错误

Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not insert: [zhongfucheng.domain.User]
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2327)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2834)
    at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273)
    at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320)
    at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
    at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
    at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
    at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
    at zhongfucheng.domain.App.main(App.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'zhongfucheng.user' doesn't exist
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2046)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1964)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1949)
    at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94)
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57)
    ... 21 more

它说是由引起的…

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'zhongfucheng.user' does

因为我在配置映射关系的时候,使用了自动增长序列,而我的id字段又是为String,所以出错了!

        <!--主键映射,属性名为id,列名也为id-->
        <id name="id" column="id">

            <!--根据底层数据库环境自动增长主键-->
            <generator class="native"/>
        </id>

因此, 将JavaBean对象的id设置成int类型就可以解决问题了!

NoHibernateSessionboundtothread

如果出现了这个错误, 看看在使用Hibernate的时候有没有在事务的环境下执行操作!

HQL语句参数异常IllegalArgumentException

查看HQL的语句是否写错了, 是否有在From后面加空格 。我就是没有加空格报了错误!

        return sessionFactory.getCurrentSession().createQuery("from " + " "+clazzName).list();

MappingException

如果出现类似下面的错误:

Exception in thread "main" org.hibernate.MappingException: You may only specify a cache for root <class> mappings
    at org.hibernate.cfg.Configuration.getRootClassMapping(Configuration.java:2724)
    at org.hibernate.cfg.Configuration.applyCacheConcurrencyStrategy(Configuration.java:2764)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1375)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1826)
    at zhongfucheng.aa.App5.main(App5.java:17)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

Process finished with exit code 1

查看你设置的在 配置文件设置的缓存类是否是继承着别的类, 也就是说:我开始的时候是配置的是Monkey这个类…而Monkey这个类继承着Animal,因此报错了。。

也就是说: Hibernate在二级缓存中不能配置子类

object references an unsaved transient instance

今天在 使用一对多,多对一保存数据的时候出现了这个错误

Hibernate错误:

Exception in thread "main" org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: zhongfucheng.domain.Employee

为啥出现这个错误呢??? 在保存对象的时候,发现这个对象还有存在外键,这个外键是在另一个实体里面。这个实体如果不存在或者实体的主键为空,就会报这个错误!

而我在保存的时候, 并没有把拥有外键的对象保存进去….只保存了“一”方面的对象。

        //创建对象
        Dept dept = new Dept();
        dept.setDeptName("开发部");

        Employee zs = new Employee();
        zs.setEmpName("张珊");
        zs.setSalary(1111);
        Employee ls = new Employee();
        ls.setEmpName("李四");
        ls.setSalary(2222);

        //添加关系
        dept.getSet().add(zs);
        dept.getSet().add(ls);
        session.save(dept);

    /*当时我没有把Emploey对象保存一起保存...因此出现了这个错误
          session.save(zs);
        session.save(ls);*/

还有一个解决方案: 在映射文件中配置级联保存更新

异常集锦

ASM异常

ASM ClassReader failed to parse

如果出现类似下面的错误,原因就是JDK版本太高了,我换成1.7就没事了

Caused by: org.springframework.core.NestedIOException: ASM ClassReader failed to parse 

class file - probably due to a new Java class file version that isn't supported yet: 

file [C:/SSM/out/production/SSM/zhongfucheng/dao/DeptDao.class]; nested exception is 

java.lang.IllegalArgumentException

AJAX异常

ajax中的suceess函数使用this

今天在写ajax的时候,后台返回数据给前台, 可是总是不能把数据正常显示在页面上. ..

明明已经进入了success函数了,并且在该代码的前后都能够正常执行..

      success: function (responseTest) {
          if (responseTest == "no") {
              alert("进来no");
              $(this).next("span").html("品牌的名称不能相同!!");
              alert("为啥没变?");
              isSubmit = false;
              return false;
          }else{
              $(this).next("span").html("");
          }
      },

调试了半天,原来在ajax中使用this,就不再是我们原来页面上的this了

下面是我找到的答案:

你那个this指向的是ajax的配置,不是按钮,请认真看jqueryAPI,要做个闭包

所以说,以后 在ajax上就不要随便使用this了!

DbUtils使用异常

dbUtils太多参数错误?

如果出现类似这样的错误, 检查一下是否sql语句和参数的位置对调了

java.lang.RuntimeException: java.sql.SQLException: Too many parameters: expected 0, was given 1 Query: 1 Parameters: [SELECT COUNT(*) FROM book WHERE category_id=?]

IDEA使用异常

类上面有个叉叉,导致编写无法成功,一直找不到符号

今天重新打开原来的项目,想编译一下做下测试,但是一直编译不成功,一个类怎么都找不到。

后来再看一下的时候发现 该类下有个小叉叉

异常集锦

原来是设置了编译时忽略它了,不知道idea为啥帮我这样做。

解决:

异常集锦

eclipse复制到IDEA中文不匹配,编译失败

今天使用把 eclipse的包复制到Intellij Idea下,结果在编译的时候,它说我的数据是GBK,而Idea默认的数据是UTF-8 ,因此出错了。。。

异常集锦

解决:在项目中直接把对象的encoding.xml配置文件删除了就行了

异常集锦

严重: Error listenerStart

在Idea导入eclipse项目的时候,启动Tomcat时出现了 严重: Error listenerStart 这么一个错误

导致Tomcat无法启动起来,之前都没有遇到过这种情况….

在网上找了很多资料,有的说是 <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener> 的问题,有的说是包冲突的问题….

上面的都不能解决我的问题,后来把idea的缓存清掉,重开,然后就解决了这个问题了。。

异常集锦

我也是挺无语的。

idea下使用autowire注解注入对象,结果初始化不到类

如果idea下使用autowire注解注入对象,结果初始化不到类,明明使用快捷键alt+insert是可以找到该注入的对象的。

而我们在使用的时候,缺报错了???

注意,当我们在注入对象的时候,我们留意在编辑面板上是否有对应的对象:

异常集锦

如果没有这个标识的话,我们就查查我们是否把其他模块中的spring配置文件加载了。

idea下使用Maven找不到类

当我们配置好pom文件的时候,准备启动Tomcat, Tomcat缺报找不到类的错误. .

可是明明我们的pom文件是没有问题的,在web.xml中也是可以ctrl+鼠标左键把类找到…为啥就报这么一个错误呢??

另我百思不得其解,我开始思考的是不是pom错了,可是折腾一番缺没发现错误…

后来去找了相关的参考博文:

参考博文1

参考博文2

我就尝试根据他们说讲的,

  • maven所依赖的jar包导入到我的web工程的lib目录
  • 把pom配置文件加入packing标签

上面这两个操作并不能解决掉我的问题…

后来我又怀疑是不是maven配置错误了….就很烦..其实是没有错误的…

值得声明的是: 我原本是没有使用任何模版去创建maven项目的【我学的时候就没有,因此都是自己手动创建的】

最后,我 使用webapp模版去生成maven项目,然而却可以运行成功了【就不知道缺少了哪里东西…】

如果遇到了在Idea下找不到类的情况下,可以借鉴一下….

另外,如果知道原因的同学可在评论下告诉我,谢谢!

IDEA编码编译不通过

IDEA 进行编译代码的时候,特别是新项目 特别容易出现 编码错误,但是 File-Encoding中设置的又没有问题,而且maven 是能打包的,就是用 idea 自带的 编译的时候 就会出现提示 找不到字符,错误开头会提示

未结束的注释、非法类型的开始、缺少符号

java: Multiple encodings set for module chunk test  
  
"GBK" will be used by compiler

但是我们的 设置里面 设置的 是 UTF-8 那么显然哪个地方把它设置为 GBK 了

最后解决办法 是: 检查.idea/encodings.xml是否对某些类指定了charset,删除即可

异常集锦

IO流异常

Stream closed

今天在做SSH项目的时候,出现了这个错误。百思不得其解,网上的答案都不能解决我的问题…..

后来,一气之下就重新写, 写了之后发现在JSP遍历集合的时候出错了

        <s:iterator value="rolePrivilegeSet">
           <s:property value="#privilegeMap[compositeKey.code]"/>
        </s:iterator>

最后发现是Hibernate懒加载的问题,在配置文件中设置不懒加载,就解决掉这个问题了。

Struts Problem Report

Struts has detected an unhandled exception:

Messages:   
Stream closed
File:   org/apache/jasper/runtime/JspWriterImpl.java
Line number:    210
Stacktraces

java.io.IOException: Stream closed
    org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:210)
    org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
    org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:177)
    org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:915)
    org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:656)
    org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:132)
    org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:188)
    com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:369)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:273)
    org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:564)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:161)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:550)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    java.lang.Thread.run(Thread.java:722)

二次更新:


我把getContextMap()换成是getApplicatoin(),也会出现这样的错误….

ActionContext.getContext().getContextMap().put("privilegeMap", Constant.PRIVILEGE_MAP);

留意域对象有没有错误!

Maven异常

Maven常见的错误以及解决方案

常见的Maven错误

当遇到401错误的时候,看看自己当前使用的Maven是集成的还是自己下载的,然后去配置setting.xml文件

Mybatis异常

MyBatis查询不出关联数据Collection属性和resultMap属性

Mybatis中Collection的resultMap和ofType选择

在做项目的时候,关联List集合的数据可以使用Collection标签来进行关联。

在教程里边是使用ofType属性拿到数据的, 但我觉得resultMap和ofType没什么区别呀。于是我就使用了resultMap属性了。

        <!--与最小销售单元的关系-->
        <collection property="ebSkus" resultMap="com.rl.ecps.sqlMap.EbSkuMapper.BaseResultMap">
            
            <!--最小销售单元与规格值的关系-->
               <collection property="specList" resultMap="com.rl.ecps.sqlMap.EbSpecValueMapper.BaseResultMap"></collection>

        </collection>

但是死活拿不到speceList的数据….

  • 如果在集合中还有对象的关系要体现出来的话,那我们只能使用ofType。
  • 如果集合中都是对象本身基本属性了,那么可以使用resultMap
<collection property="skuList" ofType="com.rl.ecps.model.EbSku">
        <id column="SKU_ID" jdbcType="DECIMAL" property="skuId" />
        <result column="ITEM_ID" jdbcType="DECIMAL" property="itemId" />
        <result column="SKU" jdbcType="VARCHAR" property="sku" />
        <result column="SKU_PRICE" jdbcType="DECIMAL" property="skuPrice" />
        <result column="SHOW_STATUS" jdbcType="DECIMAL" property="showStatus" />
        <result column="STOCK_INVENTORY" jdbcType="DECIMAL" property="stockInventory" />
        <result column="SKU_UPPER_LIMIT" jdbcType="DECIMAL" property="skuUpperLimit" />
        <result column="LOCATION" jdbcType="VARCHAR" property="location" />
        <result column="SKU_IMG" jdbcType="VARCHAR" property="skuImg" />
        <result column="SKU_SORT" jdbcType="DECIMAL" property="skuSort" />
        <result column="SKU_NAME" jdbcType="VARCHAR" property="skuName" />
        <result column="MARKET_PRICE" jdbcType="DECIMAL" property="marketPrice" />
        <result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" />
        <result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime" />
        <result column="CREATE_USER_ID" jdbcType="DECIMAL" property="createUserId" />
        <result column="UPDATE_USER_ID" jdbcType="DECIMAL" property="updateUserId" />
        <result column="ORIGINAL_SKU_ID" jdbcType="DECIMAL" property="originalSkuId" />
        <result column="LAST_STATUS" jdbcType="DECIMAL" property="lastStatus" />
        <result column="MERCHANT_ID" jdbcType="DECIMAL" property="merchantId" />
        <result column="SKU_TYPE" jdbcType="DECIMAL" property="skuType" />
        <result column="SALES" jdbcType="DECIMAL" property="sales" />
        <result column="RES_CODE" jdbcType="VARCHAR" property="resCode" />
        <result column="PACK_ID" jdbcType="DECIMAL" property="packId" />
        <collection property="specList" ofType="com.rl.ecps.model.EbSpecValue">
            <id column="SPEC_ID" jdbcType="DECIMAL" property="specId" />
            <result column="SKU_ID" jdbcType="DECIMAL" property="skuId" />
            <result column="FEATURE_ID" jdbcType="DECIMAL" property="featureId" />
            <result column="SPEC_VALUE" jdbcType="VARCHAR" property="specValue" />
        </collection>
    </collection>

如果关联的对象仅仅是当前对象的本身,那么我们可以使用resultMap

如果关联对象中还有其他关联属性的话,那只能使用ofType了。

Mysql异常

Mysql不能插入中文数据

上次遇到的是向mysql插入中文数据,中文数据乱码了。这次直接就不能插入中文数据了!!!!

参考博文:http://blog.csdn.net/generalyy0/article/details/7598027

总结

①: 检查数据表所有字段的状态


show full columns from 表名;

②:发现Collation项非utf8,修改它! 【两处的字段名要相同的】


alter table 表名 change 字段名 字段名 varchar(100) character set utf8 collate utf8_unicode_ci not null default '';

例子:

alter table a_employee change password password varchar(255) character set utf8 collate utf8_unicode_ci not null default '';

Mysql中文乱码

在使用JDBC连接Mysql数据库向Mysql数据库插入一条带有中文的记录,在查询的时候,发现全都是??????

异常集锦

查询了一些资料, 最简单的解决办法如下

①:设置当前库的编码

    ALTER DATABASE zhongfucheng
    CHARACTER SET utf8;

②:设置当前表的编码

    ALTER TABLE customer
      CHARACTER SET utf8;

③:使用JDBC连接数据库时,指定编码

    jdbc:mysql://localhost:3306/zhongfucheng?characterEncoding=utf8

当我们完成这三个步骤的时候,再插入数据:

异常集锦

SpringMVC异常

SpringMVC错误 Request method ‘PUT’ not supported”

如果出现了类似这样的警告: Request method DELETE not supported

但是我们的页面可以正常的运行,那么就去查看一下。 Controller是否返回了JSON对象,而我们没有写@Resoponse注解。

SpringMVC上传文件MultipartFile异常

如果在使用SpringMVC中使用文件上传的MultipartFile对象时,出现了以下的错误:

Could not instantiate bean class[org.springframework.web.multipart.MultipartFile]: Specified class

那么就在参数前加入: @RequestParam 注解即可…

原因就是传过来的参数名称和我们在Controller参数的名称不一致!

SQL错误

SQL更新错误JDBC batch update constraint [null]

今天在写多个删除功能的时候出现了这么一个错误: 意思是删除操作的时候,没有找到对应的外键。

Cannot delete or update a parent row: a foreign key constraint fails (`ssh03`.`role_privilege`, CONSTRAINT `FK45FBD628F05C38CB` FOREIGN KEY (`role_id`) REFERENCES `role` (`roleId`))
Cannot delete or update a parent row: a foreign key constraint fails (`ssh03`.`role_privilege`, CONSTRAINT `FK45FBD628F05C38CB` FOREIGN KEY (`role_id`) REFERENCES `role` (`roleId`))
Could not execute JDBC batch update
Could not execute JDBC batch update; SQL [delete from role where roleId=?]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
org.springframework.dao.DataIntegrityViolationException: Could not execute JDBC batch update; SQL [delete from role where roleId=?]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update

在网上找了很久,都没有找到对应的错误。。 我的删除操作是先查找Role对象,再通过删除它

后来debug起来又是匪夷所思的: 后台能够得到外界传递过来的id

异常集锦

在查询对象的时候,就死活查不了外键的数据【让我搞了很久很久】。。

异常集锦

最后发现id上多了一个空格???????至于为什么多了一个空格,,我现在还不知道。。。 于是把空格去掉,就解决这个bug了 。。。

    /*批量删除*/
    public String deleteSelect() {
        for (String s : selectedRow) {

            roleServiceImpl.delete(s.trim());
        }
        return "list";
    }

…. 如果知道为什么会多出一个空格的,请在评论下告诉我 ….

SSM整合异常

SSM整合异常Result Maps collection already contains value for

如果在SSM整合的时候出现以下的错误:

留意一下是不是既在Mybatis配置文件中加载了映射文件,又在Spring配置文件中使用扫描式去加载映射文件了。两者是不能够重合使用的!

Caused by: org.springframework.core.NestedIOException:

 Failed to parse mapping resource: 'file [C:/SSM/out/production/SSM/zhongfucheng/dao/DeptMapper.xml]'; 

nested exception is java.lang.RuntimeException: Error parsing Mapper XML. 

Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for zhongfucheng.entity.DeptMapper.deptResultMap

JSON异常

上传文件时返回值JSON带pre style

这次在上传的时候发现JSON返回的值是这样子的:

异常集锦

而后台明明返回的是原生的JSON数据:

{"realPath":"http://localhost:8081/file/upload/20170904190650266529.png","relativePath":"/upload/20170904190650266529.png"}

在前端我们可以把无关的数据删除了,因此, 解析的JSON代码如下

   var jsonObj = $.parseJSON(responseText.replace(/<.*?>/ig,""));

当然了,在别的博客看到这样的解决思路:

异常集锦

可以参考一下,我并没有证实..

反射异常

对象没有声明为class【objectIsNotAnInstanceOfDeclaringClass】

今天在使用反射的时候,出现了 java.lang.IllegalArgumentException: object is not an instance of declaring class 错误…具体是invoke()调用的时候

   String returnFlag = (String) m.invoke(t, request, response);

没有方法异常NoSuchMethodException

今天做动态代理的时候,出现了 java.lang.NoSuchMethodException 错误…..主要是我使用method反射方法的时候,忘记把参数带上了,于是一直就出现这个错误……

总结起来其实就是一句话: 反射的时候要记得参数!!!!

//反射真实具体方法的时候,要把参数带上!!!!
 Method method1 = t.getClass().getMethod(methodName,method.getParameterTypes());

第一个参数应该是调用该方法的对象,而我粗心直接把Class对象给过去了….. 实际上第一个参数应该是Object

没找到包异常

没找到包com mchange v2 ser Indirector

在使用C3P0连接池的时候,发现了这个错误….原来要使用C3P0的使用, 不仅仅要导入 c3p0-0.9.2-pre1.jar 这个jar包,还要导入 mchange-commons-0.2.jar 这个jar包

反正我用Oracle使用C3P0连接池就出现了这种情况!

类型找不着错误

类型找不着错误TypeMismatchException

今天在使用SSH框架做项目的时候出现了这个错误,找了我非常非常多的时间!!!!!!!

Struts Problem Report

Struts has detected an unhandled exception: 


Messages: 1.Provided id of the wrong type for class zhongfucheng.user.entity.User. Expected: class java.lang.String, got class zhongfucheng.user.entity.User
2.Provided id of the wrong type for class zhongfucheng.user.entity.User. Expected: class java.lang.String, got class zhongfucheng.user.entity.User; nested exception is org.hibernate.TypeMismatchException: Provided id of the wrong type for class zhongfucheng.user.entity.User. Expected: class java.lang.String, got class zhongfucheng.user.entity.User
 
File: org/hibernate/event/def/DefaultLoadEventListener.java 
Line number: 135

去网上搜也有类似的, 一般都是Integer和String匹配不同。。。而我明明要的是String,给了我一个User对象

Expected: class java.lang.String, got class zhongfucheng.user.entity.User

原来我在Service层的时候根据id删除记录,我把对象传递过去了。因为我的User对象也实现了Serializable接口!!!!这样就没有报任何错误!!!

异常集锦

原本我只要把id传递过去就行了!!!!!!我传了对象!!!很烦!!!!!

部署项目上线异常

发送邮件连接不到25端口

将网上上线了以后,发送邮件却发不了了…明明在本地上还是可以发送的。

原因如下:

http://blog.csdn.net/a2279860a/article/details/59012885

如果用的是阿里云的话,那么很可能我们得使用587端口。!

XML异常

元素 ‘beans’ 必须不含字符 [子级], 因为该类型的内容类型为“仅元素”

问题原因:XML文件中有多余的字符,是不是在Ctrl+V的时候把不该弄的东西弄进去了。 空格也有可能是一个问题

参考博文: http://blog.csdn.net/ludonqin/article/details/51056837

Quartz异常

Quartz业务类无法注入Spring对象问题

在刚开始遇到的时候还以为是Spring配置哪里错误了,结果搞了那么久,才知道Quartz与Spring注入对象是不关联的。。

因为Quartz的业务Job对象是由Quartz来自行管理的….

参考博文: http://www.cnblogs.com/dupang/p/6063734.html#3749301 和 https://www.tuicool.com/articles/Qjyamu

我是在这篇中找到答案的: http://www.cnblogs.com/feiqihang/p/5358100.html ,与之类似的: http://blog.csdn.net/himly_zhang/article/details/59112721

还有一点需要说明的是,如果使用了 SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this); 的话,那么JobDetail传入的参数就需要使用DataMap来获取了,不能使用成员变量+setter方法获取了…

Junit测试Quartz无反应

今天在做项目的时候,使用Junit测试Quartz写得对不对的时候,死活得不到激活,可是sleep了之后却有结果了。

这令我百思不得其解,而在public static void main方法中却可以得到结果,最后查到资料:

http://blog.csdn.net/ubuntu_yanglei/article/details/62041724

因为,job是一个线程,junit线程结束了,job线程还在运行,导致了job获取不到一些bean;

解决:

junit线程sleep一段时间,足够job去启动测试。

Tomcat异常

returned a response status of 403 OR 409

当我们使用jersy把图片上传到我们的图片服务器中【tomcat】,我们可能会有以下的错误:

returned a response status of 403 OR 409

403和409我都遇到过, 不过都是把我们的配置文件修改成可写即可!

    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>

        <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

我使用的开发环境是idea,因此只能修改原有的总Tomcat配置文件了:

异常集锦

加入高亮标识出来的那段代码,重启服务器即可!


异常集锦

2018年1月10日09:41:34

还有就是在upload目录下先得有东西。。不然还是会报上面那个错误。(随便丢一个文件进去->1.jsp)

SpringBoot异常

Could not find acceptable representation

Spring Boot: HttpMediaTypeNotAcceptableException: Could not find acceptable representation原因及解决方法:

今天在写项目的时候出现了这个问题,上网查了一下资料。主要是以下两种情况:

  • json开发包没有导入
  • 静态资源和我们的REST API冲突了。

后来,我弄了一下,都不是上面两种情况。

最后发现是由于在跳转的时候,Web服务器的路径改变了。导致一些本来能够加载的静态资源,现在加载不到了。

最后改写了路径,就没有这个错误了。

Git

Git提交后没有Contributions

解决博文:https://segmentfault.com/a/1190000004318632

我使用的是windows来进行开发的。我原本以为在IDEA下使用命令行也是可以解决的。可是在运行上篇博文的第三步的时候就一直报错。

说我的email不对、

后来使用windows下git的命令行方式就可以了。

detached head

使用Git不知道为啥在操作的时候切换到head了,于是在提交的时候老是有:detached head

于是上网查找了资料,就说head指向了?????,于是就切换回来。

git checkout master

原文 

http://zhongfucheng.bitcron.com/post/cuo-wu-jie-jue/yi-chang-ji-jin

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 异常集锦

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址