在目录中找不到 Java .properties 文件

问题描述 投票:0回答:1

我是 Java 开发新手,所以我对 .properties 文件有点困惑。我知道 JVM 在运行时如何查找它们,但我有一个稍微不同的问题。

我的项目文件夹中有一个

resources
目录,其中有一个
strings
子目录,我在其中存储所有语言的所有字符串值,有点像在 Android Studio 中创建空项目时一样。

我想访问项目中所有包的

strings
目录中包含的 .properties 文件。

  • 资源
      • strings_en.properties
      • strings_it.properties
  • 我的第一个包裹
    • 源代码
      • com
        • 示例
          • 文件.java
  • 我的第二个包裹
    • 源代码
      • com
        • 示例
          • 另一个文件.java
  • 源代码
    • com
      • 示例
        • Main.java

每次我尝试调用 ResourceBundle.getBundle() 并指定名称和区域设置时,都会收到一个异常,告诉我我的包不存在。

  1. 我已经尝试指定我请求 .properties 值的文件的相对路径;
  2. 我已经尝试指定项目根文件夹的相对路径来加载 .properties 文件;
  3. 我尝试将文件从
    strings_en.properties
    重命名为
    strings_en.java
    ,对于意大利语文件也是如此。

我希望有人能解释我如何实现这个以及将来如何使用属性文件。

提前致谢。

java intellij-idea localization internationalization properties-file
1个回答
0
投票

您走在正确的道路上!编译时,resources文件夹中的文件会被移动到根目录。不过,它们不会移出任何父文件夹,因此您仍然必须提供作为资源文件夹的直接子级的任何文件夹的相对路径。

所以这是你的结构:

resources
    strings
        strings_en.properties
        strings_it.properties

这样,调用 ResourceBundle.getBundle("strings/strings", Locale.English) 应该返回 strings_en.properties 值。

# strings/strings_en.properties
hello=hello
public static void readProperties() {
    ResourceBundle bun = ResourceBundle.getBundle("strings/strings", Locale.ENGLISH);
    System.out.println(bun.getString("hello"));
}
    
prints: hello
© www.soinside.com 2019 - 2024. All rights reserved.