所以,java有一个内置的库,专门用于将java源代码编译成.class文件,它就在javax.tools.所以,我想知道你究竟是如何让它发挥作用的.我已经阅读了javadoc,并在那里给出了一些示例,但是当我使用这些示例时,我会遇到错误.
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
Run Code Online (Sandbox Code Playgroud)
这是oracle提供的示例,以便获取StandardJavaFileManager可以从中执行更多操作的类的实例.但是,我在该代码的第一行遇到了一些问题.当我尝试这样做时ToolProvider.getSystemJavaCompiler();,它总是返回null.在该方法的javadoc中,它表示"返回此平台提供的编译器,如果没有提供编译器,则返回null." 但他们从未表现出任何其他方式获得一个实例JavaCompiler.我已经尝试了许多其他方法,例如使用a ServiceLoader来找到我能够提供的任何参考,但不会占上风.我怎么能让这个工作?
在Python中,您可以使用它exec()来执行一段代码。
有没有什么方法可以在 Java 中执行此操作,以便我可以从字符串调用函数,而且还可以执行其他操作,例如获取一些用户输入并将其作为 Java 代码运行。
注意:这与 Java 中是否有 eval() 函数不同?; 那只是eval()我想要的exec()。