java - 使用 "internal"JavaCompiler时如何设置bootclasspath

标签 java javacompiler

如何解决以下警告

warning: [options] bootstrap class path not set in conjunction with -source 8

何时使用内部JavaCompiler

示例代码(对我的源代码稍作修改):

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); 
JavaCompiler.CompilationTask task = compiler.getTask(null, null, null, compilerOptions, null, javaFileObjects);
task.call();

我尝试的显而易见的事情是在上面的示例代码中向 compilerOptions 提供 -bootclasspath 。但您只能在 Option.OptionGroup.BASIC 组中提供选项(但事实并非如此)。

编辑: 更多信息:我正在使用 OpenJdk11,并且我收到了最多 10 个源的警告。

最佳答案

从编译器中,您可以获得文件管理器来设置引导类路径:

StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
List<File> filePaths = ...;
fileManager.setLocation(StandardLocation.PLATFORM_CLASS_PATH, filePaths);

https://docs.oracle.com/javase/8/docs/api/javax/tools/StandardJavaFileManager.html#setLocation-javax.tools.JavaFileManager.Location-java.lang.Iterable-

https://docs.oracle.com/javase/8/docs/api/javax/tools/StandardLocation.html#PLATFORM_CLASS_PATH

关于java - 使用 "internal"JavaCompiler时如何设置bootclasspath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53934192/

相关文章:

java - 仅排除一级 Log4j Logger

java - 使用Processing作为java servlet

响应指标的 JavaFX 场景图修改

java - 如何动态编译和运行资源中带有.class文件的.java文件?

java - Apache tomcat maven 插件在不存在的 Java 版本上编译

java - 如何仅将具有 xml 标签的文本文件中的某些元素打印到新文本文件中?

Java的操作顺序

java - 无法使用 JavaCompiler 编译 @Entity 等注释

Javac 缺少有效 final 的优化

java - 这个 if 语句会抛出异常还是忽略它?