3

我有一个 Mule CE 应用程序,它使用 Java 组件将 CSV 文件转换为 XML。我的 Java 类需要访问一个名为的 flatpack XML 文件map.xml- 我已将它放在src/main/resources. 我的 Java 类在src/main/java. 我目前正在map.xml我的 Java 类中访问该文件,如下所示:

fr = new FileReader("src/main/resources/map.xml");

这在 Mule Studio 中运行良好,但是当我尝试在 Mule Standalone 中运行此应用程序时,我收到以下错误:

java.io.FileNotFoundException: src/main/resources/map.xml (No such file or directory)

有没有办法可以使这个文件路径相互关联,以便它可以在 Studio 和 Standalone 中工作?我也简单地尝试过fr = new FileReader("map.xml");,但这在 Studio 中失败了。

更新

通过结合@Learner 的答案和这篇文章中的一些信息,我设法找到了解决这个问题的方法。我已将我的 Java 类更新为以下内容,这在 Studio 和 Standalone 中都有效:

fr = new FileReader(MyClassName.class.getResource("/map.xml").getPath());

更新

如何检索 mule-app.properties 文件?如果相同,那么它也可以在 CloudHub 上运行。

4

2 回答 2

3

有几种方法可以做到这一点:

  1. 您可以像这样将资源读取为流, src/main/resources 下的文件在您的类路径中

    InputStream is = this.getClass().getResourceAsStream("map.xml");

  2. 另一种推荐的方法是将您的转换器创建为 aspring bean并通过 spring 注入外部 map.xml 文件依赖项。

于 2014-04-22T12:48:42.980 回答
0

通常,当您将路径放在src/main/resources中时,它位于类路径下...在独立中,它也应该从那里获取...如果没有,那么您可以将它放在保存所有属性文件的独立 conf 文件夹中吗?试试

于 2014-04-22T09:05:18.643 回答