记一次aviator ibm jdk 不兼容问题排查

问题背景

在was8.5平台,调用AviatorEvaluator.compile 方法时,整个进程都挂掉了,但是同样的代码在本地运行是没有问题的。

解决过程
  1. 在项目的根目录下找到了当进程挂掉时生成的三个文件,分别是:
    core.20190816.115359.86949.0001.dmp
    javacore.20190816.115359.86949.0002.txt
    Snap.20190816.115359.86949.0003.trc
    那就先从txt文件下手了,找到了下面的提示


    image.png

从上面的日志中看到问题很可能出在了虚拟机厂商不同,导致本地现象和was平台不一致

  • was8.5jdk版本


    image.png
  • 本地版本


    image.png
  1. 定位到错误中的代码行


    image.png

错误是出现在标红的地方
这段代码也给出的暗示,如果错误次数达到10000次,就将preferClassLoader设置为 true,但是我们碰到的情况是只要执行标红的代码整个进程就会挂掉,根本等不到10000次。所以我们的解决方案是:在启动参数中,将配置aviator.preferClassloaderDefiner设置为 true

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容