Получение ресурса в другом проекте с использованием classloader
Используя ClassLoader#getResource(), мне нужно получить доступ к файлу, который присутствует в проекте, отличном от того, где находится мой текущий код. Как это может быть сделано?
Я использую затмение.
Структура каталогов:
корень | -project1 | | -package | | -myResourceFile | -project2 | -package | -myCodeFile
Я пытаюсь получить myResourceFile из myCodeFile, используя myCodeFile.class.getClassLoader(). GetResource("../../project1/package/myResourceFile"), но всегда возвращающий ноль. Я не хочу добавлять project1 в classpath project2. Хотя добавление, что также не сработало.
С уважением,
2 ответа
Плохо пытаться читать файлы из другого проекта, потому что это связывает вас именно с этой структурой каталогов. Вы уже сделали первый шаг в отделении проектов с помощью getResource()
вместо использования java.util.File
API, так что вы можете пройти полный путь.
В Eclipse вы можете добавлять другие проекты в путь сборки проектов (Свойства проекта -> Путь сборки Java -> Проекты). Вы должны быть в состоянии прочитать файлы других проектов сейчас.
Если вы используете maven, вы можете указать project1/package в качестве папки ресурсов в pom.xml project2. Вы можете использовать метод getResource Classloader, чтобы получить ресурс
http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html