2012-01-07 1 views
1

Tomcat 클래스 경로에 공개 api가있는 클래스를 다시 참조하는 Java 코드 조각이 동적으로 생성되었습니다. 리플렉션을 통해 이러한 클래스의 공개 api (메서드)를 올바르게 식별 할 수 있지만이 정보를 사용하여 Java 코드를 생성 한 후에 Java 컴파일러 API로 컴파일하려고했습니다.코드 조각을 동적으로 컴파일하기 위해 Tomcat에서 클래스 경로에 액세스합니다.

이것이 가능합니까? Tomcat이 내 서블릿을 어떻게 든로드하고 Java 컴파일러 API에 전달하는 데 사용한 클래스 경로를 가져와야합니까?

앤디

답변

1

당신은 당신은 = compiler.getTask

CompilationTask 작업에 컴파일러 옵션을 전달할 물건을 ..이 코드는 클래스 경로가 검색 않습니다

List<String> options = new ArrayList<String>(); 
options.add("-classpath"); 
StringBuilder sb = new StringBuilder(); 
URLClassLoader urlClassLoader = (URLClassLoader) Thread.currentThread().getContextClassLoader(); 
for (URL url : urlClassLoader.getURLs()){ 
    sb.append(url.getFile().replace("%20", " ")).append(File.pathSeparator); 
} 
options.add(sb.toString()); 

을 클래스 패스를 통과해야합니다. getTask (작성자, 메모리 관리자, 진단, 옵션, classes, compilationUnits);

관련 문제