Mule - как получить доступ к файлам в src/main/resources в классе Java при работе в Studio и Standalone?

У меня есть приложение Mule CE, которое использует компонент Java для преобразования файла CSV в XML. Мой класс Java должен получить доступ к 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"); и это не удается в студии.

ОБНОВИТЬ

Благодаря сочетанию ответа @Learner и некоторой информации в этом посте мне удалось найти решение этой проблемы. Я обновил свой класс Java до следующего, и это работало как в Studio, так и в Standalone:

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

ОБНОВИТЬ

Как восстановить файл mule-app.properties? Если так же, то это будет работать и на CloudHub.

2 ответа

Решение

Есть несколько способов сделать это:

  1. Вы можете прочитать ресурс как поток, как это, файлы в каталоге src/main/resources находятся в вашем classpath

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

  2. Другой рекомендуемый способ - создать свой трансформатор как spring bean и вставьте внешнюю зависимость файла map.xml через Spring.

Обычно, когда вы помещаете путь в src/main/resources, он попадает в classpath... В Standalone он также должен получить его оттуда... если нет, то вы можете поместить его в автономную папку conf, где хранятся все файлы свойств и попробуй

Другие вопросы по тегам