在Linux或Mac下,启动Tomcat时会报以下错误:
通过上面的错误信息,第一眼看起来是因为-Xss的值设置的比较小,但是调整-Xss的参数方法是不正确的。其中 -Xss的解释如下:
解决方案如下:
后面看到的错误信息 org.bouncycastle.asn1.ASN1EncodableVector 是出在这个类上,
这是因为tomcat启动会去扫描jar,这个类是出现在bcprov .jar这个包。所以在tomcat的conf目录里面catalina.properties的文件中
在tomcat.util.scan.StandardJarScanFilter.jarsToSkip=里面加上bcprov .jar过滤启动不会报错了
具体如下:
另外网上的另一种解决方案是升级Tomcat版本。自己也试了一下。用Tomcat9.0.6 也会出现这个问题,只不过频率比较低。
Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations for web application [/cmi] due to a StackOverflowError. Possible root causes include a too low setting for -Xss and illegal cyclic inheritance dependencies.解决方案如下:
后面看到的错误信息 org.bouncycastle.asn1.ASN1EncodableVector 是出在这个类上,
这是因为tomcat启动会去扫描jar,这个类是出现在bcprov .jar这个包。所以在tomcat的conf目录里面catalina.properties的文件中
在tomcat.util.scan.StandardJarScanFilter.jarsToSkip=里面加上bcprov
.jar过滤启动不会报错了
具体如下:
我为了偷懒一只都是多个tomcat同时用的,把启动文件名跟项目名对应好,想启动哪个项目就启动哪个项目,真是非常方便。试试下面的方法:
首先,认真检查两个tomcat的server.xml。不要重复配置端口9999.
然后,因为9999不一定是tomcat占用的,所以检查9999是否被其他程序占用,如下:
进入装逼控制台(cmd):
netstat -aon | findstr 9999 可以查到占用9999端口的进程的进程号
tasklist | findstr 4216 查看进程名(假设4216是上一步中查询到的进程号)
如果找到了,谨慎的瞧瞧这个进程有没有用。如果没有用,直接枪毙了;如果有用,那个想用9999端口的tomcat就换成其他得端口吧。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)