【问题标题】:Library jar to read .properties file from client CLASSPATH用于从客户端 CLASSPATH 读取 .properties 文件的库 jar
【发布时间】:2015-01-09 21:25:36
【问题描述】:

我制作了一个 maven 库 jar,它根据配置的格式映射检测日期格式。 目前我对格式映射进行了硬编码,但我想将格式映射隔离到 .properties 文件中,如下所示:

  • 内部 .properties 文件(具有一些默认格式映射)。
  • 外部 .properties 文件(dateformats.properties,客户可以将其添加到其应用程序 CLASSPATH 以扩展库提供的默认格式映射的文件)。

从库 CLASSPATH 中读取内部 .properties 文件很容易,但是如何让库从客户端 CLASSPATH 中读取外部 .properties 文件?

【问题讨论】:

  • “库 CLASSPATH”和“客户端 CLASSPATH”之间没有区别,Java 只使用一个类路径,这是 JVM 查找 *.class 的目录和 JAR 文件的集合文件和其他资源。

标签: java maven


【解决方案1】:

可供您选择的选项数量:

  • 让客户端指定您将使用的 Properties 实例(这样您的 API 将接收键入的 java.util.Properties 作为其参数之一)
  • 在类路径中搜索其他 .properties 文件并首选客户端文件(获取 java.class.path 属性并搜索 jar 条目或为 inventive with getResources method
  • 使用客户端的类加载器(一种方法是检查堆栈并确定客户端的类,然后访问它的类加载器,另一种方法是让客户端将其作为参数传递)

每种方法都有其优点和缺点,这取决于您的需求...

【讨论】:

  • 感谢您的回答,对于第一个选项,您能否说得更清楚。您的意思是要求客户端在类的构造函数中提供文件URI吗?
  • 嗨,希望这更清楚,我已经添加了您接收 Properties 实例,但您也可以让您的 API 接收 URI 而不是那个
猜你喜欢
  • 1970-01-01
  • 2020-07-31
  • 2011-04-15
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多