博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eclipse中tomcat自动部署时自动停止问题processWorkerExit(w, comp
阅读量:6992 次
发布时间:2019-06-27

本文共 1105 字,大约阅读时间需要 3 分钟。

hot3.png

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 选项钱的对勾就行了。如下图所示:

22233502_FxKX.jpg

转载于:https://my.oschina.net/u/1175952/blog/202356

你可能感兴趣的文章