问题描述
我正在使用JavaCompiler API编译一些具有库依赖性的代码。它可以很好地编译,但是问题是它不应该-我还没有给它一个classpath参数。这意味着它必须从用来编译它的程序中获取库。我不希望使用这些库,因为它们可能是与我要编译的库不同的版本。
下面是我正在使用的代码:
List<String> compileOptions = Arrays.asList(
"-d",requestFolder.getAbsolutePath());
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null,null,null);
Iterable<? extends JavaFileObject> compilationunits1 = fileManager.getJavaFileObjects(
checkedOutFiles.toArray(new File[checkedOutFiles.size()]));
compiler.getTask(null,fileManager,compileOptions,compilationunits1).call();
fileManager.close();`
是否可以使用这些库停止它?我看到StandardJavaFileManager具有getClassLoader()方法,但没有设置器。我假设它是类加载器继承自我正在运行的程序,这就是为什么编译有效的原因?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)