4
Java編譯器API是否支持在類路徑參數中使用Class-Path
條目的僅清單jar文件?支持Java編譯器API中的僅清單jar文件
我想在Maven Surefire測試中使用Java編譯器API,但似乎Java編譯器API或更確切地說是ToolProvider.getSystemJavaCompiler()
不能正確處理純淨的Surefire罐子。
下面的代碼片段顯示一個失敗的測試
new File("target/out").mkdir();
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
URLClassLoader classLoader = (URLClassLoader)Thread.currentThread().getContextClassLoader();
// create classpath
StringBuilder path = new StringBuilder();
for (URL url : ((URLClassLoader) classLoader).getURLs()) {
if (path.length() > 0) {
path.append(File.pathSeparator);
}
String decodedPath = URLDecoder.decode(url.getPath(), "UTF-8");
path.append(new File(decodedPath).getAbsolutePath());
}
System.err.println(path);
// compile
List<String> options = Arrays.asList(
"-classpath", path.toString(),
"-s", "target/out",
"src/test/java/com/mysema/codegen/SimpleCompilerTest.java");
int compilationResult = compiler.run(null, null, null,
options.toArray(new String[options.size()]));
if (compilationResult != 0) {
Assert.fail("Compilation Failed");
}
你可以發佈一個小代碼示例,顯示你正在嘗試做什麼以及它如何失敗?非常有趣的問題? –
增加了一些測試代碼 –