У меня есть два java-проекта. Проект B - это утилита, предназначенная для упаковки в виде банки и призванная другими проектами. Проекту A необходимо вызвать проект B. Однако, когда проект B вызывает ClassLoader getResource(), он загружает ресурсы из проекта A. Как мне загрузить его из проекта B? Кажется, что это должно быть легко, поэтому я чувствую, что мне не хватает чего-то простого. Следующий код в проекте В, вызывается из проекта A. путь/к/file.txt находится в папке ресурсов в проекте B.ClassLoader getResource() в имени jar использует ресурсы от вызывающего абонента
System.out.println(Paths.get(classLoader.getResource("path/to/file.txt").toURI()).toString());
Output: C:\Users\....\projectA\target\test-classes
'getResource (...)' возвращает URL как 'баночке: /path/to/B.jar /path/to/file.txt'which Путь фактически не может использоваться, поскольку это файл, содержащийся в файле. Попробуйте использовать 'File' вместо' Path'. Результат должен быть чем-то вроде 'file: /path/to/B.jar!/Path/to/file.txt' вместо этого. Кроме того, не используйте относительные пути для загрузки ресурсов. Измените 'путь/to/file.txt' на'/path/to/file.txt'. Также рассмотрите 'getResourceAsStream (...)', если вы хотите загрузить байты из этого файла напрямую, а не 'getResource (...)' –