首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将9+中的src/main/resources中的属性文件作为模块加载的任何源代码示例

将9+中的src/main/resources中的属性文件作为模块加载的任何源代码示例
EN

Stack Overflow用户
提问于 2018-09-19 09:44:00
回答 1查看 369关注 0票数 0

我正在将Java8应用程序迁移到JDK11 (早期访问)。新代码应该是一个模块。它从Java8属性文件中读取了一条错误消息,但在Java11中返回了'null‘。

感谢您的帮助。

代码语言:javascript
复制
    ├── build.gradle
    ├── out
    │   └── production
    │       ├── classes
    │       │   ├── com
    │       │   │   └── acme
    │       │   │       └── Main.class
    │       │   └── module-info.class
    │       └── resources
    │           └── messages
    │               └── mymessages.properties
    ├── settings.gradle
    └── src
        ├── main
        │   ├── java
        │   │   ├── com
        │   │   │   └── acme
        │   │   │       └── Main.java
        │   │   └── module-info.java
        │   └── resources
        │       └── messages
        │           └── mymessages.properties
        └── test
            ├── java
            └── resources

Java

代码语言:javascript
复制
    package com.acme;

    import java.util.Locale;
    import java.util.PropertyResourceBundle;
    import java.util.ResourceBundle;

    public class Main {
        public static void main(String args[]){
             Main m=new Main();
             m.process();
        }
    void process(){
        PropertyResourceBundle prb= (PropertyResourceBundle)ResourceBundle.getBundle("messages.mymessages",Locale.getDefault());
        String key="key1";
        String value= prb.getString(key);
        System.out.println(key+":"+value);
        }
    }
代码语言:javascript
复制
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name messages.mymessages, locale en_US
at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2045)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1679)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1572)
at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1546)
at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:914)
at resource.main/com.acme.Main.process(Main.java:13)
at resource.main/com.acme.Main.main(Main.java:10)
EN

回答 1

Stack Overflow用户

发布于 2018-09-20 07:48:08

对于上面的代码,解决方案是:"--class-path ./out/production/resources“。我想通了。另外,另一种变体是这样的。我有一套JUnits。在测试期间,代码需要从/src/main/resources/messages/mymessages.properties.生成错误消息然而,测试无法从"main“中”看到“资源。经过一天的尝试,不同组合的解决方案是:“--模块-路径...pathTotestClassesOrOtherProductionClasses;$buildDir/resources/main;$buildDir/resources/test;".因此您需要添加".../resources/main“作为模块路径

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52396829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档