Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mule—在Studio和单机版中运行时,如何访问Java类中src/main/resources中的文件?_Java_Mule_Filepath_Mule Studio_Flatpack - Fatal编程技术网

Mule—在Studio和单机版中运行时,如何访问Java类中src/main/resources中的文件?

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中运行此应用程序时

我有一个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中运行此应用程序时,出现以下错误:

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不存在”,但是当我在文件浏览器中查看路径时,它就在那里。