问题背景
在was8.5平台,调用AviatorEvaluator.compile
方法时,整个进程都挂掉了,但是同样的代码在本地运行是没有问题的。
解决过程
-
在项目的根目录下找到了当进程挂掉时生成的三个文件,分别是:
core.20190816.115359.86949.0001.dmp
javacore.20190816.115359.86949.0002.txt
Snap.20190816.115359.86949.0003.trc
那就先从txt文件下手了,找到了下面的提示
从上面的日志中看到问题很可能出在了虚拟机厂商不同,导致本地现象和was平台不一致
-
was8.5jdk版本
-
本地版本
-
定位到错误中的代码行
错误是出现在标红的地方
这段代码也给出的暗示,如果错误次数达到10000次,就将preferClassLoader
设置为 true
,但是我们碰到的情况是只要执行标红的代码整个进程就会挂掉,根本等不到10000次。所以我们的解决方案是:在启动参数中,将配置aviator.preferClassloaderDefiner
设置为 true