来源 | 沉默王二

责编 | Carol

头图 | CSDN 下载自视觉中国

今天要写的文章中涉及到一串代码,关于 Undertow 的一个入门示例,贴出来大家看一下。

public class UndertowTest {public static void main(final String[] args) {Undertow server = Undertow.builder().addHttpListener(8080, "localhost").setHandler(new HttpHandler() {@Overridepublic void handleRequest(final HttpServerExchange exchange) throws Exception {exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");exchange.getResponseSender().send("Hello World");}}).build();server.start();}
}

Undertow 是大名鼎鼎的 Red Hat(红帽子)公司开发的一款基于 NIO 的高性能 Web 服务器软件,不需要单独安装软件,只需要几行代码就可以在 Java 应用程序中启动一个 Web 服务,就像上面那段代码。

前提条件是你已经在 pom.xml 文件中引入了 Undertow 的依赖。

<dependency><groupId>io.undertow</groupId><artifactId>undertow-core</artifactId><version>2.0.28.Final</version>
</dependency>

没想到,代码在 IDEA 中运行后,竟然非正常退出了!

没有任何错误提示,真的是郁闷。主机名 localhost 没有问题,端口 8080 也没有被占用,但 main 方法在没有任何外力的因素下直接结束了。在浏览器地址栏中输入 http://localhost:8080 自然也无法显示“Hello World”。

回看 Run 面板中的输出信息,唯一让我感到疑惑的就是下面这行:

进程已结束,退出代码-1073741819 (0xC0000005)

正常来说,程序执行的输出结果如下所示:

进程已结束,退出代码0

退出代码是 0,表示程序正常结束;退出代码是 1073741819,它代表什么意思呢?

肯定是非正常呗。我第一时间想到的原因是,会不会是我代码写错了?于是查看了 Undertow 的官网,一个单词一个单词的检查,甚至上了 beyond compare 进行比较,也没有找到任何可疑之处。

折腾得够呛,于是不得不上了谷歌大法:

换了各种关键词,查阅了各种文章,没有找到可行的解决办法。谷歌无果,我想那就试试某度吧,结果搜到了游戏,天地良心啊。

搜索引擎靠不住,那就只能靠自己了。于是我写下了这段代码:

public class TestClose {public static void main(String[] args) {try {Thread.sleep(10000000);} catch (InterruptedException e) {e.printStackTrace();}}
}

运行结果大吃一惊。我揉了好几次眼睛,甚至上了倍清亮眼药水,结果也是非正常退出,错误代码和之前的 Undertow 一致。

搞什么嘛,这可是 Thread.sleep(10000000) 休眠大法啊,也能在一秒内结束,那一定不是 Undertow 的代码示例写错了,而是 IDEA 在作妖。

事到如今,我想起了被打入冷宫的 Eclipse。同样的代码,进程没有立即结束掉。

Undertow 的代码示例也没有问题,程序没有立即结束。

在浏览器中输入 http://localhost:8080 也能正常访问。

对比之后,问题就很确定了,出在 IDEA 身上,一定是它哪根神经错乱了。于是换了一下谷歌搜索的关键词,结果如下所示。

果然也有同行遇到了类似的问题,但文章中提到的原因竟然是金山词霸的划词翻译,这有点太扯了吧?

虽然有点扯,但的确值得试一试,毕竟山穷水尽了啊,况且我的电脑上真的安装了金山词霸,并且是打开状态。

那就退出试试呗,结果。。。。。。。。。。真的有用啊。

这次,进程没有主动结束,这是什么神奇的操作啊?人生第一次开始怀疑科学了!

既然和金山词霸有关系,那么我就脑洞打开了,是不是因为我装了汉化插件的关系?于是我把 IDEA 的汉化插件禁用,并且在重启之前打开了金山词霸。

结果证明没关系,进程主动结束了。

于是只好再次退出金山词霸。没想到,当我点击 Run 的小图标再次运行程序时,IDEA 竟然闪退了。看来它们之间的确有着不可告人的秘密,具体原因未知。

不管怎么说,这个莫名其妙的 bug 是解决了,有必要总结一波经验心得了,希望能够给小伙伴们在开发中一些启发。因为作为程序员,面对不会说话的计算机,有时候,真的会遇到一些难以名状的错误,把我们折腾得够呛。

经验一:保持冷静,切勿暴躁,心态失衡时容易捶鼠标,捶键盘,捶坏了,还得买新的。

经验二:先从自身代码找原因,复制粘贴有时候也会出现偏差,这时候,最好就和源头对比一下。如果肉眼发现不了,上比较工具,靠谱。

经验三:问谷歌,不要问某度。这年头,经常听到一些小伙伴们抱怨说,公司不允许上网,遇到问题时真的无从下手,我只能说这样的公司真的是闭关锁国啊。

经验四:换个环境试一试。同样的代码,环境不同,运行后的解决真有可能不同。IDEA 中出错,放 Eclipse 中试试;Windows 下出错,放 Linux 下试试;自己的环境有问题,放同事的环境下试试。

经验五:搜索的时候换一下关键词,真的是“柳暗花明又一村”啊。

经验六:重复以上。

今日福利

遇见大咖

由 CSDN 全新专为技术人打造的高端对话栏目《大咖来了》来啦!

CSDN 创始人&董事长、极客帮创投创始合伙人蒋涛携手京东集团技术副总裁、IEEE Fellow、京东人工智能研究院常务副院长、深度学习及语音和语言实验室负责人何晓冬,来也科技 CTO 胡一川,共话中国 AI 应用元年来了,开发者及企业的路径及发展方向!

戳链接或点击阅读原文,直达报名:https://t.csdnimg.cn/uZfQ

IDEA 惊天 bug:进程已结束,退出代码 1073741819相关推荐

  1. IDEA惊天bug:进程已结束,退出代码-1073741819 (0xC0000005)

    由于昨天要写的文章没有写完,于是今天早上我四点半就"自然醒"了,心里面有事,睡觉也不安稳.洗漱完毕后,我打开电脑,正襟危坐,摆出一副要干架的态势,不能再拖了. 要写的文章中涉及到一 ...

  2. Pycharm 出现 进程已结束,退出代码-1073741819 (0xC0000005) 的问题 可能的解决方法

    Pycharm 出现 进程已结束,退出代码-1073741819 (0xC0000005) 的问题 可能的解决方法 进程已结束,退出代码-1073741819 (0xC0000005) 这个错误代码表 ...

  3. Pycharm 进程已结束,退出代码-1073741819 (0xC0000005)

    在用python做界面开发时,多个界面都有连接数据库,界面一连接数据库的代码放到了构造函数中,使其第一次运行时没问题,当其他界面也连接数据库了,此时界面一的连接就会断掉.所以在界面一操作与数据库有关的 ...

  4. python进程已结束 退出代码0_PyCharm:进程以退出代码0结束

    9 个答案: 答案 0 :(得分:22) 这是个好消息!这意味着您的代码没有错误.你已经完成了它并且没有任何问题. Pycharm在找不到任何错误(加上您给出的任何输出)时返回0并返回1以及遇到错误时 ...

  5. 进程已结束,退出代码-1073740791 (0xC0000409)查看不了详细报错的解决方法

    用pycharm写一个pyqt5的界面,返回报错如标题所示 解决方法: 点击编辑配置 把在输出控制台中模拟终端改为使用python控制台运行 即可看到详细报错 如果一个选项不行就试试另一个

  6. 关于Could not find QtWebEngineProcess.exe 进程已结束,退出代码 -1073740791 (0xC0000409) 问题

    使用 QtWebEngineWidgets import QWebEngineView报错 Could not find QtWebEngineProcess.exe 进程已结束,退出代码 -1073 ...

  7. 【错误记录】Ubuntu 下 VSCode 编译报错 ( 无法生成和调试,因为活动文件不是 C 或 C++ 源文件。终端进程启动失败(退出代码: -1)。终端将被任务重用,按任意键关闭。 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在 VSCode 中 , 创建 cpp 源码 : #include <iostream> #include <vector> ...

  8. vs code 问题:preLaunchTask“build”已终止,退出代码为 1。解决办法

    vs code 问题:preLaunchTask"build"已终止,退出代码为 1.解决办法 参考文章: (1)vs code 问题:preLaunchTask"bui ...

  9. VMware虚拟机 之 VMX进程已提前退出

    前言 由于我在使用VMware虚拟机时,时常出现故障,现将故障之一"vmx进程已提前退出"的处理方法记录一下. 故障描述 在使用虚拟机时,由于不正常的退出或强制退出,导致虚拟机关闭 ...

最新文章

  1. Linux上常用的安全技术iptables与squid代理服务器
  2. mysql unix_timestamp 格式化_FROM_UNIXTIME 格式化MYSQL时间戳函数_MySQL
  3. mysql 字段a减字段b_SQL 数据库 如何实现第一行字段A减字段B得到值C,然后再用C减去第二行字段B,以此类推,求高手解答...
  4. 20135202闫佳歆--week 8 实验:理解进程调度时机跟踪分析进程调度与进程切换的过程--实验及总结...
  5. JSP环境搭建和入门
  6. 【云存储】企业云存储管理解决方案
  7. bat生成exe总结
  8. 计算机软件设计费计算标准,水利工程咨询、勘测设计费收费标准及计算程序
  9. 龙芯3A3000上实现BLFS的轻量级桌面LXDE
  10. 韩立春21日工作内容
  11. 计算机文件只读模式,电脑文件只读模式如何修改 – 手机爱问
  12. Licheepi zero SPI Flash 系统编译
  13. springboot+党员信息管理系统 毕业设计-附源码161528
  14. 模板:求图的强连通分量(SCC)
  15. Win10系统电脑连接打印机的设置方法
  16. GStreamer插件实列rockchipmpp
  17. 必应API接口node.js版 - 极客玩家大白
  18. JUST技术:从GPS数据中挖掘用户行为习惯
  19. xff头使用sqlmap注入(心血来潮的分享)
  20. 博客系统的前端页面设计

热门文章

  1. MySQL故障检测_检测MySQL的表的故障的方法
  2. leetcode 2 --- 两数相加
  3. vue.js能美化界面吗_vue将单页面改造成多页面应用的方法
  4. java获取字符串第一位_Java程序员经典面试题集大全 (十一)
  5. python 批量读取xlsx并合并_如何用Python快速导入多个excel文件并合并文件数据
  6. java判断方法_Java常用的判断方法
  7. 物联网全称_物联网的魔力世界
  8. vscode 导入python库_vscode 如何导入python库
  9. 800多名各国院士热忱参与 第三届“科学探索奖”名单公布
  10. 瞎扯数学分析-微积分