因此,java 有一个内置库,专门用于将 java 源代码编译成 .class 文件,它位于javax.tools
. 所以,我想知道你是如何让它工作的。我已经阅读了 javadoc,它在其中给出了一些示例,但是当我使用这些示例时,我得到了错误。
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
这是 oracle 给出的示例,目的是获取StandardJavaFileManager
类的实例,您可以从中做更多的事情。但是,我对该代码的第一行有一些问题。当我尝试做时ToolProvider.getSystemJavaCompiler();
,它总是返回 null。在该方法的 javadocs 中,它说,“返回随该平台提供的编译器,如果没有提供编译器,则返回 null。” 但他们从未展示过任何其他方式来获取 a 的实例JavaCompiler
。我尝试了许多其他方法,例如使用 aServiceLoader
找到我可以找到的任何参考,但没有占上风。我怎样才能让它发挥作用?