gpt4 book ai didi

java - 从 ColdFusion 引用 java 资源文件

转载 作者:行者123 更新时间:2023-11-30 07:08:25 24 4
gpt4 key购买 nike

我在我的 CF 代码中使用包含 .properties 文件的 .jar 文件。但是,从 CF 运行时似乎无法找到 .properties 文件。

我的java代码是:

    String key ="";
String value ="";

try {
File file = new File("src/test.properties");
FileInputStream fileInput = new FileInputStream(file);
Properties properties = new Properties();
properties.load(fileInput);
fileInput.close();

Enumeration enuKeys = properties.keys();
while (enuKeys.hasMoreElements()) {
key = (String) enuKeys.nextElement();
value = properties.getProperty(key);
//System.out.println(key + ": " + value);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
key ="error";
} catch (IOException e) {
e.printStackTrace();
key ="error";
}

return(key + ": " + value);

我的 test.properties 文件在项目的 src 文件夹中,确保在编译时选中它。从 Eclipse 运行时,它会提供预期的键和值。但是,当从 CF 运行时,我得到了捕获的错误。

我的 CF 代码很简单:

propTest = CreateObject("java","package.class"); 
testResults = propTest.main2();

是否有一种特殊的方式来引用 .properties 文件以便 CF 可以访问它,或者我是否需要将文件包含在 .jar 之外的某个地方?

最佳答案

File("src/test.properties");

那是因为您使用的是物理文件路径,这意味着它必须存在于物理磁盘上,在 jar 之外。此外,它是一个相对文件路径。相对路径取决于您当前的上下文或目录。 CF 中的工作目录与 Eclipse 中的不同。当你在CF中使用jar时,相对路径"src/test.properties"显然解析为一个不存在的文件。因此错误。

如果你想载入包含在 jar 中的属性文件,你需要使用getResourceAsStream()。 .

// returns null if path does not exist
InputStream is = YourClass.class.getResourceAsStream("/test.properties");
if (is != null) {
Properties properties = new Properties();
properties.load(is);
//...
}

注意:/表示包路径的根,也用作路径分隔符

关于java - 从 ColdFusion 引用 java 资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com