java - 从 Java 控制台程序使用 .properties 文件

标签 java properties jar

我创建了一个 Java 程序来比较在版本管理工具中保存为文件的脚本与在我们的数据库中加载的脚本。这是一个简单的程序,从头到尾运行并在发现差异时输出到控制台。现在我想从 .properties 文件加载数据库 URL、用户名和密码以及我的文件的位置。

我确实假设如果我将文件放在类路径中,它将从我的 Java 程序中可见:

Properties values = new Properties();
try
{
    File checkPackages = new File("myfile.properties");
    if(!checkPackages.exists()) throw new FileNotFoundException();

    values.load(new FileReader(checkPackages));
}
catch(FileNotFoundException fnfe) {}

我还想将整个程序保存到一个 .jar 文件中,这样它就更有用了。不幸的是,我发现引用 .properties 文件的唯一方法是将它放在我运行 java.exe 的目录中。 PATH 或 CLASSPATH 似乎不适用??

我找到了 an Oracle site about the .jar file's Manifest file正如我希望那里有答案一样,但是 Class-path: list 中的元素似乎只引用不在 .jar 中的 .jar 文件(而不是 .properties 文件!) 问题: 有什么方法可以将 .properties 文件包装到 .jar 文件中,这样我的用户就不必知道它在那里了吗? 有什么方法可以将 Oracle 驱动程序 .jar 包装到应用程序的 .jar 中,这样我的用户就不必知道它在那里(Oracle 说这需要“自定义代码”)?

TIA

最佳答案

您可以使用 ClassLoader#getResource() 获取类路径中的资源(即使密封在 JAR 中)和 ClassLoader#getResourceAsStream()方法。

例如:

Properties values = new Properties();
values.load(ThisClass.class.getClassLoader().getResourceAsStream("myproject.properties"));
// umm, don't forget to close the stream, this code is just an example usage

请注意,将用户名和密码存储到程序中的任何数据库中is considered a heavy security risk .

关于java - 从 Java 控制台程序使用 .properties 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16873455/

相关文章:

java - 如何在java中使用正则表达式删除某些字符

java - 将音量应用于产生静电/噪音的 PCM 样本?

xcode - 钨和钢等 NSColor 也可用吗?

java - 错误 : Archive for required library cannot be read or is not a valid ZIP file.

JavaPreparedStatement 在 SQL 查询中将小写字符串名称传递给区分大小写的 PostgreSQL 数据库

java - Java 中的外部鼠标监听器

c# - 如何通过接口(interface)继承在C#中重新定义一个属性?

wpf - Visual Studio 2010 属性帮助

java - 基于一个源文件的依赖关系创建 Java Eclipse 项目的子集

java - Eclipse 从文件读取但可运行的 .jar 文件不读取