PrivateServer(GMS, KMS)

importPackage 에러 해결법

judy1467 2023. 1. 14. 15:54

(개인 기록용)

importPackage 에러

사설 서버를 구동하는 과정에서 "importPackage"와 관련된 에러 해결법

 

화면에서 볼 수 있듯이 스크립트 부분에서 에러가 발생하며

"importPackage" is not defined in <eval> at line number N 이라고 출력된다.

 

오류가 발생하는 이유는 해당 스크립트가 자바 6~7버전에서 사용되던 Rhino(자바스크립트 엔진) 구문으로 작성되어있고 팩(서버)파일은 자바8 이상의 버전으로 작성되어있어 서로 호환이 안되기 때문이다.

(참고로 자바 8 부터는 Nashorn(자바스크립트 엔진)을 이용한다.)

 

따라서 자바 8에서 이전 버전인 Rhino의 구문과 호환을 하기위해 코드 한 줄을 추가해줘야한다.

 

소스파일이 있는경우 

netbeans

사진과 같이 프로젝트 소스 패키지에서 "getEngineByName"을 검색한다.

 

검색결과로 이동하여

netbeans

사진속의 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") 로 수정