【问题标题】:Mule - how to access files in src/main/resources in Java class when running in Studio and Standalone?Mule - 在 Studio 和 Standalone 中运行时如何访问 Java 类的 src/main/resources 中的文件?
【发布时间】:2014-04-22 08:55:18
【问题描述】:

我有一个 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 文件?如果相同,那么它也可以在 CloudHub 上运行。

【问题讨论】:

  • 我使用了这条路径,但我得到“/Users/userName/appName/.mule/apps/appName/classes/liquibase/db.changelog.xml 不存在”但是当我查看文件资源管理器中的路径,就在那里。

标签: java mule filepath mule-studio flatpack


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢@Learner。我探索了您的第一个选择,并设法找到了解决方案。我已经更新了我原来的帖子。
【解决方案2】:

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

【讨论】:

  • 谢谢@Anirban。您能否提供一个示例文件路径,说明我将如何访问类路径中的某些内容?
  • 在我的情况下,我已将文件放在 src/main/resources 中,只是将其称为“abc.xml”...不需要提供为 src/main/resources ...只需“ abc.xml" 可以正常工作...如果您在 src/main/resources 中创建了任何文件夹说 conf,那么您需要提供 "conf/abc.xml"
猜你喜欢
  • 1970-01-01
  • 2020-07-24
  • 2017-10-03
  • 2016-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-21
相关资源
最近更新 更多