java - 在 jar 之外找不到资源

标签 java resourcebundle properties-file

我正在尝试读取位于我的代码的 jar 文件外部的属性。使用 ResourceBundle 但无法读取属性文件 locations.properties。属性文件位于 resource 文件夹下,并且 jarresource 文件夹位于同一目录下。

myDir

   --> myJar.jar
   --> resource
          -->locations.properties

我不知道下面的代码有什么问题:

public static ResourceBundle getResourceBundle(String fileName) throws MalformedURLException{
    if (resourceBundle == null) {
        File file = new File("resource/"+fileName);
        URL[] urls = { file.toURI().toURL() };
        ClassLoader loader = new URLClassLoader(urls);
        resourceBundle = ResourceBundle.getBundle(fileName, Locale.getDefault(), loader);
    }
    return resourceBundle;
}

这就是调用 ResourceBundle 对象的方式:

ResourceBundle locationBundle = null;
try {
    locationBundle = ReadPropertyUtil.getResourceBundle(propFileName);
} catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

请指导此代码有什么问题以及读取外部属性文件的正确方法是什么。

最佳答案

  1. 获取 Jar 文件路径。
  2. 获取该文件的父文件夹。
  3. 使用 InputStreamPath 中的该路径和您的属性文件名。

    Properties prop = new Properties();
    try {
            File jarPath=new File(YourClassNameInJar.class.getProtectionDomain().getCodeSource().getLocation().getPath());
            String propertiesPath=jarPath.getParentFile().getAbsolutePath();
            System.out.println(" propertiesPath-"+propertiesPath);
            prop.load(new FileInputStream(propertiesPath+"/resource/locations.properties"));
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    

关于java - 在 jar 之外找不到资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24503599/

相关文章:

java - maven-compiler-plugin:3.8.1:compile 抛出 NullPointerException

java - 如何修复 Apache Beam 中的 "Joining unbounded PCollections is currently only supported for non-global windows with triggers"

java - 谷歌眼镜 : Performing "Click" event or something similar

java - 为什么我会收到 MissingResourceException

java.io.FileNotFoundException : class path resource [WEB-INF/classes/library. 属性]无法打开,因为它不存在

java - 在 Eclipse RCP 应用程序中禁用插件贡献

java - 当我尝试在这个简单的 Java 批处理程序中检索 .properties 文件时,为什么会出现此异常?

java - 如何在运行后将 swing 组件文本更新为不同的区域设置

当 Windows 任务计划程序运行时,Java 8 jar 无法找到属性文件

java - 如何使用 Maven 构建从属性文件中删除注释?