Mule - 在Studio和Standalone中运行时如何访问Java类中src / main / resources中的文件?

时间:2014-04-22 08:55:19

标签: java mule filepath mule-studio flatpack

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

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的答案和this帖子中的一些信息,我设法找到了解决这个问题的方法。我已经将我的Java类更新为以下内容,这在Studio和Standalone中都有效:

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

更新

如何修复mule-app.properties文件?如果相同那么它也可以在onCloudHub上工作。

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:0)

通常当你在 src / main / resources 的路径中放置它时,它来自classpath ...在Standalone中它也应该从那里得到它...如果没有,那么你可以把它放在独立的conf文件夹,其中保存所有属性文件并尝试