[Groovy Script] (3) - Java에서 GroovyScript 컴파일 없이 실행하기








-----------------------------------------------------------------------------------------------
소스코드 : https://github.com/sowen2819/SosimhanBlogger
-----------------------------------------------------------------------------------------------







GroovyScript를 컴파일 없이 자바에서 불러 쓰기 위해 이것저것 해본 것들을 공유합니다!












1) 이전글( [Groovy Script] (2) ) 에서 만든 java파일을 다음과 같이 바꿔줍니다.






소스 파일

ClassLoader parent = JavaFile.class.getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass = loader.parseClass(new File("src/groovyscript/GroovyScript.groovy"));
GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
Object[] args1 = {"소심한개발자"};
String groovyResult = (String) groovyObject.invokeMethod("hiGroovy", args1);
System.out.println(groovyResult);



이 글은 클래스로더 및 리플렉션에 대한 설명이 아니기때문에 간단하게 소개하겠습니다!




ClassLoader parent = JavaFile.class.getClassLoader(); //클래스로더 호출

GroovyClassLoader loader = new GroovyClassLoader(parent); // 그루비 클래스로더 호출
(GroovyClassLoader : groovy Doc )

Class groovyClass = loader.parseClass(new File("src/groovyscript/GroovyScript.groovy"));
//groovyscript패키지 아래 GroovyScript.groovy를 호출

GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance(); //groovyClass 로딩

String groovyResult = (String) groovyObject.invokeMethod("hiGroovy", args1);
// GroovyObject의 invokeMethod 메소드를 통해 groovyScript의 hiGroovy메소드 호출










2) 일단은 성공! 과연 class파일이 없어도 실행이 될것인가....






3) GroovyScript의 class파일 지우기





4) 그리고 실행하면 성공!








하.지.만 우리가 원하는 것은 Script파일이 포함된 라이브러리를 만드는 것.

jar파일을 만들때 항상 class만 있어서 문제될게 없었지만
class파일과 script파일이 같이있는 라이브러리는 어떻게 될까?
 그리고 Groovy라이브러리의 의존성문제, 호출했을 때 프로젝트 상대주소 문제가 발생한다.

  1.   라이브러리 파일을 어떻게 구성할 것인가?
  2.   Groovy라이브러리 의존성 문제
  3.   상대주소 문제-







Comments