java - JAR 文件如何读取外部属性文件

标签 java properties jar

我们有一个应用程序的连接池组件(JAR 文件)。截至目前,应用程序连接详细信息已捆绑在 JAR 文件中(在 .properties 文件中)。

我们可以让它更通用吗?我们能否让客户端告知属性文件详细信息(路径和文件名)并使用 JAR 获取连接?

在客户端代码中有这样的东西有意义吗:

XyzConnection con = connectionIF.getConnection(uname, pwd);

除此之外,客户端将指定(以某种方式???)具有要连接的 URL、超时等的属性文件详细信息。

最佳答案

最简单的方法,使用 -D 开关在 java 命令行上定义系统属性。 该系统属性可能包含您的属性文件的路径。

例如

java -cp ... -Dmy.app.properties=/path/to/my.app.properties my.package.App

然后,在您的代码中您可以执行以下操作(为简洁起见未显示异常处理):

String propPath = System.getProperty( "my.app.properties" );

final Properties myProps;

if ( propPath != null )
{
     final FileInputStream in = new FileInputStream( propPath );

     try
     {
         myProps = Properties.load( in );
     }
     finally
     {
         in.close( );
     }
}
else
{
     // Do defaults initialization here or throw an exception telling
     // that environment is not set
     ...
}

关于java - JAR 文件如何读取外部属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3457918/

相关文章:

java - Spring @Cacheable 仍然执行复杂的键

java - Tomcat不返回图片资源

python - 你如何拥有一个名为 "property"的属性并使用 @property 装饰器?

java - 来自 LeanFT 项目的 JAR 包

java - jar(war)压缩有什么优点?

java - 常用的HTTP客户端和代理

java - 从同一个进程访问两个安全的 (Kerberos) Hadoop/HBase 集群

ios - 属性包装: change empty to Optional

properties - Kotlin 吸气二传手没有领域

shell - 如何让两个 JAR 在 "docker run container"上自动启动