importPackage 에러 해결법
(개인 기록용)
사설 서버를 구동하는 과정에서 "importPackage"와 관련된 에러 해결법
화면에서 볼 수 있듯이 스크립트 부분에서 에러가 발생하며
"importPackage" is not defined in <eval> at line number N 이라고 출력된다.
오류가 발생하는 이유는 해당 스크립트가 자바 6~7버전에서 사용되던 Rhino(자바스크립트 엔진) 구문으로 작성되어있고 팩(서버)파일은 자바8 이상의 버전으로 작성되어있어 서로 호환이 안되기 때문이다.
(참고로 자바 8 부터는 Nashorn(자바스크립트 엔진)을 이용한다.)
따라서 자바 8에서 이전 버전인 Rhino의 구문과 호환을 하기위해 코드 한 줄을 추가해줘야한다.
소스파일이 있는경우
사진과 같이 프로젝트 소스 패키지에서 "getEngineByName"을 검색한다.
검색결과로 이동하여
사진속의 60번 줄 처럼 getEngineByName("javascript");
구문기준 아래로 engine.eval(fr);을 찾는다.
해당 구분 바로 윗줄에
engine.eval("load('nashorn:mozilla_compat.js');"); 를 추가하고 빌드한다.
빌드된 jar파일을 dist폴더에 기존 jar파일과 교체하면 끝
소스가 없는 경우
에러가 발생하는 스크립트를 편집모드로 열어 최상단에
load('nashorn:mozilla_compat.js'); 을 입력하고 저장하면된다.
자바 버전이 맞는데도 importpackage 오류가 뜨는 경우
소스에서 getEngineByName("javascript") 검색 후 getEngineByName("rhino") 로 수정