项目实战 —— Java项目运行报错及决绝方案

单个SSM框架

1报LifecycleException,再配置一下jdk即可,然后再手动添加maven

   

  

 

解决方法:

   

  

 

   

 然后,手动添加jar包

  

 


 

 

2、maven 项目,右键maven build启动项目的时候,报下面错误,没有在pom配置tomcat7插件

 


 

3、报找不到beans插件:更新一下项目就好

 


 

4、也许你运行的是jre而不是jdk ,并且报MojoExCeption,这时候就要配置jdk了,步骤如下

 

 


 

5ClassNotFoundException,类找不到异常,通常是mapper.xml里,返回值数据类型或参数类型映射的实体类不对,还有就是tomcat下WEB-INF里少了jar包,右键项目properties,Deployment Assembly ,add,然后把Maven Dependencies添加,下步在eclipse部署项目,部署完后clean一下即可解决

 

 

解决方法:

   

   

 


 

 6.报Unsupported major.minor version 52.0 (unable to load class com.platform.framework.web.SessionListener),先检查本地的JDK环境变量配了没有,输入java -version  ,然后重启项目即可


 

 7.报 org.apache.jasper.JasperException , /index,jsp   not  found   错误。

解决方法

(1)右键点击项目 build   path---Add Libraries--Myeclipse Library  相当于把jstl的jar包加上了,点击finish

  (2)  或者找到tomcat下的 webapps,把原来部署的项目删掉,从新部署再启动项目即可正常运行

 


 

8.报错提示:The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files;

就是当你在myeclipse引用了不同版本的JDK,解决方法是修改myeclipse工具prefenence的jdk版本为1.6即可


 

9.报找不到beans,或者无法读取文档,原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是,就是网络不好,在网络好的情况下重新启动项目即可


 

10.smm框架,调用mapper接口插入方法报空指针

解决办法:把接口的方法copy到另一个正常的mapper,xml中也对应sql也copy


 

 

11. 报XX属性在string没有getter属性,

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'business' in 'class java.lang.String'

解决办法:

检查,mapper.xml  条件入参是否有误,如 下,

<select id="getYycgdBm" parameterType="string" resultType="string">
select '${value}' || yycgdbm${business}.nextval bm from dual
</select>


 

12 报错  org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): yycg.business.dao.mapper

 

 经过查找为mapper.xml的id前面多了一个空格

 

其他可能原因排查:

参数,方法名,返回值不一致,Mapper类名和xml文件名不一致


 

13.ssm ,service业务实现类impl调用mapper接口报空指针,因为在业务实现类注入rmappe时没有加@Autowired 或其他注解

 


 

14ssm,查询报无效的列索引,模糊查询那应该用$符号而不是#号


15.报java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Sat Sep 26 11:19:55 CST 2020]; root of context hierarchy

解决办法;把pom里配置的内置tomcat去掉

 


16.报result Maps collection already contains value for yycg.base.dao.mapper.SysuserMapperCustom.mapper_resultMap[findMenuByroleidResultMap]_collection[menus]

 


 

 

17.报错  Caused by: org.apache.catalina.LifecycleException: A child container failed during start

 

原因及解决:路径找不到,在本地添加相关目录或改路径

 


 

18.Error creating bean with name 'sqlSessionFactory' defined in ServletContext resource [/WEB-INF/classes/spring/applicationContext-base-dao.xml]: Invocation of init method failed; nested exception is java.lang.NullPointerException

解决方案:暂时在最后一个中文与-之间加了一个空格(有待验证)

 


 

19.项目开了多线程后,eclipse,debug模式运行项目会停留在processWorkerExit(w, completedAbruptly);这一行代码上。

1、问题描述

            在eclipse或者集成eclipse的其他开发工具中,在tomcat中部署了项目debug模式启动项目,
      项目启动之后修改项目java源代码,eclipse会自动部署项目到tomcat中。
      但在tomcat自动重启时会自动停止到processWorkerExit(w, completedAbruptly);这一行代码上。
      
      
2、问题出现原因
   
            原因是因为在 java.util.concurrent.ThreadPoolExecutor类中的 runWorker(Worker w)方法上有未捕获的异常信息,源代码如下:
            可见在try之后并没有catch语句。而在eclipse的java debug模式中就有“遇到未捕获异常停止执行”的选项。只要不勾选该项就可以解决该问题了。
            final void runWorker(Worker w) {
        Runnable task = w.firstTask;
        w.firstTask = null;
        boolean completedAbruptly = true;
        try {
            while (task != null || (task = getTask()) != null) {
                w.lock();
                clearInterruptsForTaskRun();
                try {
                    beforeExecute(w.thread, task);
                    Throwable thrown = null;
                    try {
                        task.run();
                    } catch (RuntimeException x) {
                        thrown = x; throw x;
                    } catch (Error x) {
                        thrown = x; throw x;
                    } catch (Throwable x) {
                        thrown = x; throw new Error(x);
                    } finally {
                        afterExecute(task, thrown);
                    }
                } finally {
                    task = null;
                    w.completedTasks++;
                    w.unlock();
                }
            }
            completedAbruptly = false;
        } finally {
            processWorkerExit(w, completedAbruptly);
        }
    }
 3、解决方案

           去掉java->debug->suspend execution on uncaught exceptions 选项钱的对勾就行了。

 


 

20.tomcat运行一段时间后不运行了,突然不打印日志,中断等问题

  1.可能是内存溢出或者数据库连接池的问题。如:数据库的某些连接用完之后没有关闭,然后连接池设置的超时时间大于数据设置的最大过期时间,导致连接一直未释放。

  2.内存不足,多分配点内存给tomcat

posted @ 2019-05-06 23:27  登风360  阅读(733)  评论(0编辑  收藏  举报