发现:部分 windows 与 jansi 兼容的问题
为了支持 window cmd 的彩色日志打印, "solon-logging-logback"、"solon-logging-log4j2" 引入了:
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
</dependency>
目前有用户反馈:一台 Window Server 2012R2 升级后,程序卡死现象(启不来,也没有异常)。经实验,是由 jansi 不兼容引起的,且:
- Windows 2008,Windows2016 ,Windows2022 没问题
- Window Server 2012R2 有问题(可能跟某补丁包有关)
- javaw -jar 有问题(有兼容问题)
提醒:当出现不兼容时,排除掉 jansi 即可。例:
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.logging.logback</artifactId>
<exclusions>
<exclusion>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
</exclusion>
</exclusions>
</dependency>
附:内部的兼容处理代码
if (JavaUtil.IS_WINDOWS && Solon.cfg().isFilesMode() == false) {
//只在 window 用 jar 模式下才启用
if (ClassUtil.hasClass(() -> AnsiConsole.class)) {
try {
AnsiConsole.systemInstall();
} catch (Throwable e) {
e.printStackTrace();
}
}
}