2017-06-02 104 views
0

在我們的項目中,我們想要爲用戶界面對話框創建唯一的標識符。爲了確保開發人員不會爲對話創建重複的標識符,我創建了一個註釋處理器來檢查「對話框註釋」(它包含唯一標識符),並在Eclipse Problems視圖中通過Messager-class創建一個錯誤,如果重複標識符被檢測到。註釋處理器僅處理最近更改的類

我希望處理器能夠處理所有使用對話框批註註解的類,但是他只會在Eclipse中調用完整的構建時才這樣做。但是,如果我更改單個對話框類並保存它,處理器只處理這個單個對話框(我相信這稱爲增量構建),因此我無法檢查其他對話框是否已分配相同的標識符。 我嘗試在.factorypath文件中設置Run this container's processors in batch mode,但它似乎沒有效果。日食文檔Factory Path Preferences說這個選項:

該選項僅適用於使用Java 5鏡像API的處理器。它不會影響使用Java 6註釋處理API的處理器。

我確實使用Java 6註釋處理API。所以這似乎也不是一種選擇。

有什麼辦法讓它處理所有帶註釋的類 - 即使是沒有改變的類?我也很高興聽到其他解決最初問題的方法。

+0

這是一個XY問題 - 你想要X,但你要求Y. – Antoniossss

+0

@Antoniossss如果你看看我的最後一段,我確實問過這兩個問題。 – peq

回答

1

AnnotationProcessor將只處理已編譯的類,所以難怪你有麻煩。

我假設你的處理器在運行時收集所有的id。最好將收集到的ID保存到緩存中(例如文件),並檢查在每次編譯時掃描所有帶註釋的類(確切地說所有類)的事件。這樣,只需要單個課程編譯來註冊id。每一次未來的修改都會檢查已編譯的,未經修改的類別,並重新檢查它們。