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 ответа
Есть несколько способов сделать это:
Вы можете прочитать ресурс как поток, как это, файлы в каталоге src/main/resources находятся в вашем classpath
InputStream is = this.getClass (). GetResourceAsStream("map.xml");
Другой рекомендуемый способ - создать свой трансформатор как
spring bean
и вставьте внешнюю зависимость файла map.xml через Spring.
Обычно, когда вы помещаете путь в src/main/resources, он попадает в classpath... В Standalone он также должен получить его оттуда... если нет, то вы можете поместить его в автономную папку conf, где хранятся все файлы свойств и попробуй