問題背景
在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