因此,java有一個專門用於將java源代碼編譯爲.class文件的內置庫,它位於javax.tools
中。所以,我想知道你是如何得到它的工作。我已經閱讀了javadoc,並在其中提供了一些示例,但是當我使用這些示例時,我會遇到錯誤。使用javax.tools在運行時編譯java源代碼?
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
那就是例子甲骨文給出爲了得到StandardJavaFileManager
類從中你可以做更多的實例。但是,我在該代碼的第一行中遇到了一些問題。當我嘗試執行ToolProvider.getSystemJavaCompiler();
時,它總是返回null。在該方法的javadoc中,它說:「返回此平臺提供的編譯器;如果沒有提供編譯器,則返回null。」但他們從來沒有顯示任何其他方式獲得JavaCompiler
的實例。我已經嘗試了很多其他方式,例如使用ServiceLoader
來找到任何可以提及的參考,但是沒有任何優點。我該如何去做這件事?
http://www.java.net/node/688208 http://stackoverflow.com/questions/2543439/null-pointer-exception-while-using-java-compiler-api – nhahtdh