eclipse中tomcat自动部署时自动中止问题processWorkerExit(w, comp

一、问题描述

            在eclipse或者集成eclipse的其余开发工具中,在tomcat中部署了项目debug模式启动项目,
      项目启动以后修改项目java源代码,eclipse会自动部署项目到tomcat中。
      但在tomcat自动重启时会自动中止到processWorkerExit(w, completedAbruptly);这一行代码上。
      
      
二、问题出现缘由
   
            缘由是由于在 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);
        }
    }
 三、解决方案java

           去掉java->debug->suspend execution on uncaught exceptions 选项钱的对勾就好了。以下图所示:tomcat

相关文章
相关标签/搜索