eclipse中tomcat自动部署时自动停止问题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 选项钱的对勾就行了。

猜你喜欢

转载自ydlmlh.iteye.com/blog/2224863