引用ColdFusion中的java资源文件

时间:2014-06-02 00:47:46

标签: java eclipse coldfusion properties-file

我在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);

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

我的CF代码很简单:

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

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

2 个答案:

答案 0 :(得分:3)

  

文件( “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);
   //... 
} 

注意:/表示包路径的根,也用作路径separtor

答案 1 :(得分:1)

将ColdFusion中的文件引用作为字符串传递,而不是将文件打包到jar中。将.properties文件放在cf / java应用程序可访问的位置。