使用javax.tools.JavaCompiler中当前应用程序源文件设置的classpath问题?

时间:2011-10-20 13:54:44

标签: java

我在Web应用程序上有条件,我上传了一个.java源文件,并根据jar文件的依赖关系编译这个源文件驻留在WEB-INF / lib文件夹中。

我能够通过使用此代码加载此jar文件,并且我的文件成功编译并在WEB-INF / classes中的适当包中部署.class。在这个线程的帮助下。 How to set classpath when I use javax.tools.JavaCompiler compile the source?

File[] javaFiles = new File[]{new File(fileToCompile)};
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);

Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(javaFiles));

List<String> optionList = new ArrayList<String>();
optionList.addAll(Arrays.asList("-classpath", System.getProperty("java.class.path")));
fileManager.setLocation(StandardLocation.CLASS_OUTPUT,
                Arrays.asList(new File(servletContextPath + WEB_CLASSES_PATH)));
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, optionList, null, compilationUnits);

当我上传一个实际上与我当前的应用程序java文件有关联的.java源文件时,我遇到的唯一问题是找不到此源的引用并抱怨错误。

A类实现了com.saif.WebDriverEventListener

包com.saif不存在。

任何帮助将不胜感激。 谢谢,

0 个答案:

没有答案