项目实战 —— 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 </span><span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> w.firstTask;
    w.firstTask </span><span style="color: rgba(128, 128, 128, 1)">=</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
    boolean completedAbruptly </span><span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> true;
    try {
        </span><span style="color: rgba(0, 0, 255, 1)">while</span> (task <span style="color: rgba(128, 128, 128, 1)">!=</span> <span style="color: rgba(0, 0, 255, 1)">null</span> <span style="color: rgba(128, 128, 128, 1)">||</span> (task <span style="color: rgba(128, 128, 128, 1)">=</span> getTask()) <span style="color: rgba(128, 128, 128, 1)">!=</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">) {
            w.lock();
            clearInterruptsForTaskRun();
            try {
                beforeExecute(w.thread, task);
                Throwable thrown </span><span style="color: rgba(128, 128, 128, 1)">=</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
                try {
                    task.run();
                } catch (RuntimeException x) {
                    thrown </span><span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> x; throw x;
                } catch (Error x) {
                    thrown </span><span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> x; throw x;
                } catch (Throwable x) {
                    thrown </span><span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> x; throw new Error(x);
                } finally {
                    afterExecute(task, thrown);
                }
            } finally {
                task </span><span style="color: rgba(128, 128, 128, 1)">=</span> <span style="color: rgba(0, 0, 255, 1)">null</span><span style="color: rgba(0, 0, 0, 1)">;
                w.completedTasks</span><span style="color: rgba(128, 128, 128, 1)">++</span><span style="color: rgba(0, 0, 0, 1)">;
                w.unlock();
            }
        }
        completedAbruptly </span><span style="color: rgba(128, 128, 128, 1)">=</span><span style="color: rgba(0, 0, 0, 1)"> false;
    } finally {
        processWorkerExit(w, completedAbruptly);
    }
}

3、解决方案

       去掉java</span><span style="color: rgba(128, 128, 128, 1)">-&gt;</span>debug<span style="color: rgba(128, 128, 128, 1)">-&gt;</span>suspend execution <span style="color: rgba(0, 0, 255, 1)">on</span> uncaught exceptions 选项钱的对勾就行了。</pre>

 


 

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

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

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