从tomcat访问类路径以动态编译代码片段

时间:2012-01-07 00:41:37

标签: tomcat servlets javac

我有动态生成的java代码片段,它引用tomcat类路径中带有public apis的类。我能够通过反射正确地识别这些类的公共apis(方法),但是在使用这些信息生成我的java代码后,我将使用Java Compiler API编译它。

这可能吗?我是否需要获取tomcat用于以某种方式加载我的servlet的类路径并将其传递给Java Compiler API?

安迪

1 个答案:

答案 0 :(得分: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 task = compiler.getTask(writer,memoryManager,diagnostics, options ,classes,compilationUnits);