Linux环境下jfinal脚本启动失败的另一种情况

一、已知情况

在文档 1.5 jfinal-undertow 常见问题 中已经详细的记录了脚本无法使用问题,如下图,根本原因就是在不同操作系统上文件格式或者编码的问题。

针对这个问题已经有两位大佬给出了两种解决方案:

彻底解决Jfinal 启动脚本在window和linux 下的换行符差异

彻底解决Jfinal启动脚本在window和linux下的换行符差异的另一种方法

脚本无法使用.png

二、新的情况

新购置了一个云服务器,准备用来部署 sitesCMS官网,先发布一个demo测试。在使用jfinal.sh启动的时候没有成功,但是没有报错,反复确认几遍脚本文件没有问题。

已知情况解决不了我的问题了。

开始翻看系统日志,发现日志中只有数据库连接成功的信息,没有显示启动Undertow,多次尝试都是这样,日志如下。

image.png

能看到上面的日志说明jfinal.sh启动脚本确认是没有问题的,已经在启动程序了,并完成了数据库连接,但是由于其他原因导致没有启动成功。

再翻看之前正常情况下的启动日志,应该类似下面这样的,可以看出来连接数据库之后应该去启动Undertow,我这里没有去启动Undertow,怀疑是undertow.txt配置有问题。

image.png

undertow.txt完全配置如下:

image.png

单纯的看配置没有问题,但是当我在Linux服务器使用编辑模式打开时发现所有的文字都在一行,到这里问题就明确了,undertow.txt文件格式有问题,导致不能正常启动。

在Linux上手动编辑调整换行,再次启动,成功。

三、小结

新的情况和已知情况归根到底是同一种问题,只是不同的表现形式,写出来给大家作为一个参考。

另外,当使用脚本无法启动的时候,不要一直纠结脚本本身是否有问题,要根据脚本执行情况、报错情况、日志记录等综合考虑可能出现的问题,进而定位问题。


干货推荐

JFinal-Undertow 配置文件工作原理

Enjoy自定义指令实现及套路总结

一个被问到次数最多的问题

sitesCMS v2.0.0发布

最新版JFinal从入门到实战视频教程【60集】


评论区

JFinal

2021-03-10 14:52

windows 下的换行是个不好的设计,明明 \n 一个字符可以搞定的,非得要 \r\n 两个字符

当然, \r\n 是有历史原因的,记得来源于最初的机械打印机,\r 是 return 表示打印头回到行首,\n 是 newline 表示新起一行

也就是说机械式打印机的换行是返回行首与新起一行两个动作

虽说如此,微软也不该换着几十年前的历史包袱不放,连苹果以前的 \r 表示换行都改成了 \n 换行了

chcode

2021-03-10 16:10

package.xml 关于config 的fileset 也设置lineEnding 为unix风格就行了

zzutligang

2021-03-11 11:22

微软也是为了标新立异!什么东西,都想自己弄一套。自从使用mac做开发,7,8年了,再也不适应windows的气蛋玩意儿了。

chcode

2021-03-11 15:17

@zzutligang mac 有些软件没有,还是window最全

zzutligang

2021-03-11 16:35

@chcode 目前没有发现开发工作,mac上没有的软件。除了我用的powerdesigner,mac上没有,就装一个虚拟机。