是否有任何工具可以將Java .properties文件編譯爲可在Java EE(tomcat)應用程序中使用的類?類似android的eclipse插件產生一個靜態R.strings
類。Java:靜態字符串本地化
我發現這篇文章:
http://www.techhui.com/profiles/blogs/localization-in-gwt-using
但它是依賴於GWT。任何幫助讚賞。
是否有任何工具可以將Java .properties文件編譯爲可在Java EE(tomcat)應用程序中使用的類?類似android的eclipse插件產生一個靜態R.strings
類。Java:靜態字符串本地化
我發現這篇文章:
http://www.techhui.com/profiles/blogs/localization-in-gwt-using
但它是依賴於GWT。任何幫助讚賞。
我從來沒有聽說過這樣的工具。 GWT有一個很好的延遲綁定技術,但它不是你正在尋找的東西。不過,我認爲可以爲這些任務實現一個基本的代碼生成器。
但你的問題的答案是:據我所知沒有。
使用小型Java應用程序生成代碼+1你可以自動從一個ant任務中調用,你可以在eclipse中添加一個自動調用的構建器。 – jabal 2014-09-01 17:50:21
ResourceBundle呢?
// refers to "src/config.properties"
ResourceBundle config = ResourceBundle.getBundle("config");
String property1 = config.getString("property1");
與最近對這個問題的其他答案一樣,這並沒有回答這個問題。你所描述的是它通常是如何完成的。但在android中,您會在編譯時使用所有資源生成一個生成的類(R.id)。如果property1沒有被定義,你會在這裏得到runtimeexception。如果它沒有在Android中定義,你會得到一個編譯時錯誤。 – jontro 2014-10-17 11:59:40
我覺得一個可以寫使用ANTLR在自定義Maven插件(或Ant任務),只是生成編譯步驟之前的Java源文件的屬性非常簡單的語法。
如何將您的屬性存儲在JSON文件中。存儲在文件中的JSON對象應映射到Java類,使用Jackson映射器進行反序列化。對於Jackson,您可以強制所有字段在反序列化中必須爲非空值。 您也可以使用GSON並編寫一個自定義的反序列化器,按照您的要求執行嚴格的檢查。示例 - 您可以對字符串執行非空和非空操作。
Compiler Assisted Localization (CAL10N)不完全是你問的,但可能會有所幫助。
雖然它不會從.properties生成Java類,但使用枚舉作爲消息鍵仍然比字符串更好,因爲您可以從編譯器獲得一些幫助。
聲明一個枚舉,將其綁定到帶有註釋的.properties,並在消息查找中使用枚舉值。雖然我還沒有嘗試過。請參閱manual。
爲了國際化應用程序,我實現了一個Message Compiler,它創建了資源包文件和常量定義,作爲來自單個源文件的鍵的Java枚舉或靜態最終字符串。所以常量可以用在Java源代碼中,這比使用普通字符串更安全。在這種情況下,當使用不存在的鍵常量時,也會出現編譯時錯誤。消息編譯器不僅可以用於Java。它還爲Objective-C或Swift創建資源文件和常量,並可以爲其他編程環境進行擴展。
你能解釋一下嗎?你的意思是一個包含常量的類(比如枚舉)還是屬性的持有者? – questzen 2012-03-29 12:10:33
這篇文章看起來很像您所問:http://stackoverflow.com/questions/1578026/java-properties-files-as-strongly-typed-classes – 2014-10-18 17:31:49