2012-01-07 67 views
1

我有動態生成的java代碼片段,這些代碼片段在tomcat類路徑中引用了公有apis的類。我能夠通過反射正確識別這些類的公共apis(方法),但是在使用這些信息生成我的java代碼後,我將使用Java Compiler API進行編譯。從tomcat訪問類路徑以動態編譯代碼片段

這可能嗎?我是否需要獲取tomcat用於以某種方式加載我的servlet並將其傳遞給Java Compiler API的類路徑?

安迪

回答

1

你將不得不通過類路徑..此代碼類路徑檢索的東西

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()); 

你通過選項給compiler.getTask

CompilationTask任務=編譯器。 getTask(writer,memoryManager,diagnostics,options,classes,compilationUnits);