一、已知情况
在文档 1.5 jfinal-undertow 常见问题 中已经详细的记录了脚本无法使用问题,如下图,根本原因就是在不同操作系统上文件格式或者编码的问题。
针对这个问题已经有两位大佬给出了两种解决方案:
彻底解决Jfinal 启动脚本在window和linux 下的换行符差异
彻底解决Jfinal启动脚本在window和linux下的换行符差异的另一种方法
二、新的情况
新购置了一个云服务器,准备用来部署 sitesCMS官网,先发布一个demo测试。在使用jfinal.sh启动的时候没有成功,但是没有报错,反复确认几遍脚本文件没有问题。
已知情况解决不了我的问题了。
开始翻看系统日志,发现日志中只有数据库连接成功的信息,没有显示启动Undertow,多次尝试都是这样,日志如下。
能看到上面的日志说明jfinal.sh启动脚本确认是没有问题的,已经在启动程序了,并完成了数据库连接,但是由于其他原因导致没有启动成功。
再翻看之前正常情况下的启动日志,应该类似下面这样的,可以看出来连接数据库之后应该去启动Undertow,我这里没有去启动Undertow,怀疑是undertow.txt配置有问题。
undertow.txt完全配置如下:
单纯的看配置没有问题,但是当我在Linux服务器使用编辑模式打开时发现所有的文字都在一行,到这里问题就明确了,undertow.txt文件格式有问题,导致不能正常启动。
在Linux上手动编辑调整换行,再次启动,成功。
三、小结
新的情况和已知情况归根到底是同一种问题,只是不同的表现形式,写出来给大家作为一个参考。
另外,当使用脚本无法启动的时候,不要一直纠结脚本本身是否有问题,要根据脚本执行情况、报错情况、日志记录等综合考虑可能出现的问题,进而定位问题。
干货推荐
当然, \r\n 是有历史原因的,记得来源于最初的机械打印机,\r 是 return 表示打印头回到行首,\n 是 newline 表示新起一行
也就是说机械式打印机的换行是返回行首与新起一行两个动作
虽说如此,微软也不该换着几十年前的历史包袱不放,连苹果以前的 \r 表示换行都改成了 \n 换行了