我只是新註解。 我創建了一個示例annotationProcessor來處理我的註釋,並且當前使用命令行腳本「-processor defaultproject.annotations.DefaultProcessor」來使用它。如何在源代碼中以編程方式定義myAnnotationProcessor?
有沒有什麼辦法從代碼裏面設置這個處理器?
非常感謝 莫因
我只是新註解。 我創建了一個示例annotationProcessor來處理我的註釋,並且當前使用命令行腳本「-processor defaultproject.annotations.DefaultProcessor」來使用它。如何在源代碼中以編程方式定義myAnnotationProcessor?
有沒有什麼辦法從代碼裏面設置這個處理器?
非常感謝 莫因
的Processor interface說,這個發現過程:
該工具使用發現過程找到註釋處理器並 決定他們是否應該運行。通過配置該工具,可以控制潛在處理器組。例如,對於 JavaCompiler,要運行的候選處理器的列表可以是set directly或由用於 service-style lookup的search path控制。其他工具實現可能具有不同的配置機制,例如命令行選項;有關 的詳細信息,請參閱特定工具的文檔。
在類路徑中定義處理器的最佳方法是提供一個META-INF/services/javax.annotation.processing.Processor
文件,其中包含文本defaultproject.annotations.DefaultProcessor
。
(假設你的工具鏈支持這一機制這是最終的編譯器/工具/ IDE依賴的。)
很抱歉 我曾嘗試,就像這樣:
ArrayList processors processors.add(new MyDefaultProcessor()); JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); CompilationTask compilationTask = compiler.getTask(null, fileManager, null, null, null, null); compilationTask.setProcessors(processors); compilationTask.call();
但我不知道如何替換當前通過'null'的參數。 非常感謝 – Moein@ user847577 - David Biesack在動態編譯中查看[developerWorks developerWorks文章](http://www.ibm.com/developerworks/java/library/j-jcomp/index.html)。如果您仍然無法調用API,那應該是一個新問題。 – McDowell
謝謝,我會讀它 – Moein