【发布时间】:2012-11-21 18:21:16
【问题描述】:
所以,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。”但他们从未展示过任何其他获取JavaCompiler 实例的方法。我尝试了许多其他方法,例如使用ServiceLoader 找到我可以找到的任何参考,但没有占上风。我怎样才能让它发挥作用?
【问题讨论】:
标签: java compilation