Mule—在Studio和单机版中运行时,如何访问Java类中src/main/resources中的文件?
我有一个Mule CE应用程序,它使用Java组件将CSV文件转换为XML。我的Java类需要访问一个名为Mule—在Studio和单机版中运行时,如何访问Java类中src/main/resources中的文件?,java,mule,filepath,mule-studio,flatpack,Java,Mule,Filepath,Mule Studio,Flatpack,我有一个Mule CE应用程序,它使用Java组件将CSV文件转换为XML。我的Java类需要访问一个名为map.XML的扁平包XML文件——我已经将其放在src/main/resources中。我的Java类位于src/main/Java中。我目前正在访问Java类中的map.xml文件,如下所示: fr=newfilereader(“src/main/resources/map.xml”) 这在Mule Studio中可以正常工作,但当我尝试在Mule Standalone中运行此应用程序时
map.XML
的扁平包XML文件——我已经将其放在src/main/resources
中。我的Java类位于src/main/Java
中。我目前正在访问Java类中的map.xml
文件,如下所示:
fr=newfilereader(“src/main/resources/map.xml”)代码>
这在Mule Studio中可以正常工作,但当我尝试在Mule Standalone中运行此应用程序时,出现以下错误:
java.io.FileNotFoundException:src/main/resources/map.xml(没有这样的文件或目录)
是否有一种方法可以使此文件路径相互关联,以便它可以在Studio和单机版中工作?我还尝试了简单的fr=newfilereader(“map.xml”)代码>并且在Studio中失败
更新
通过@Learner的回答和帖子中的一些信息,我找到了解决这个问题的方法。我已将Java类更新为以下内容,这在Studio和Standalone中都有效:
fr = new FileReader(MyClassName.class.getResource("/map.xml").getPath());
更新
如何重新设置mule-app.properties文件?如果相同,那么它也会在CloudHub上工作。通常,当您将它放在src/main/resources中的path中时,它位于classpath下。。。在单机版中,它也应该从那里得到它。。。如果没有,请将其放在standalone conf文件夹中,所有属性文件都保存在该文件夹中,然后再试一次。有几种方法可以做到这一点:
您可以像这样以流的形式读取资源,src/main/resources下的文件位于类路径中
InputStream=this.getClass().getResourceAsStream(“map.xml”)
另一种推荐的方法是将转换器创建为Springbean
,并通过spring注入外部map.xml文件依赖项
谢谢@Anirban。您能否提供一个示例文件路径,说明我如何访问类路径中的某些内容?在我的例子中,我将该文件放在src/main/resources中,并将其称为“abc.xml”。。。不需要作为src/main/resources提供。。。只要“abc.xml”就行了。。。如果您在src/main/resources中创建了任何文件夹,比如conf,那么您需要提供“conf/abc.xml”,谢谢@Learner。我探索了你的第一个选择,并设法找到了一个解决方案。我更新了我原来的帖子。我使用了这个路径,但是我得到了“/Users/userName/appName/.mule/apps/appName/classes/liquibase/db.changelog.xml不存在”,但是当我在文件浏览器中查看路径时,它就在那里。