是否有任何工具可以将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