мои зависимые банки не могут найти ресурсы в пути к классу проекта

#java #spring #maven #jar

#java #весна #maven #jar

Вопрос:

У меня есть зависимый jar, которому необходимо получить доступ к файлам в ресурсах jar, а также к ресурсам проекта, который я создаю, который зависит от него. Я не уверен, является ли это задачей, которую мне нужно выполнить, или проблемой, которую мне нужно решить.

И jar, и текущий проект, который зависит от него, являются моими, и я могу изменить один или оба. Они основаны как на maven, так и на spring.

Подробнее:

 util.jar
 ->Base.class
-resources
 ->base-context.xml

app
 ->App extends Base
-resources
 ->app-context.xml
  

Для устранения неполадок я могу переместить app-context в папку ресурсов jars, и все работает, как ожидалось. Мне нужно объединить пути к классам.

app/src/test/java/com/my/app/App.class

 @ContextConfiguration(locations = "classpath:app-context.xml")
public class App extends Base {...} 
  

util.jar

 @ContextConfiguration(locations = "classpath:util-context.xml")
public abstract class Base extends AbstractTestNGSpringContextTests {...}
  

@contextconfiguration для app.class сбой, потому что он не может найти «classpath:app-context.xml «

 java.lang.IllegalStateException: Failed to load ApplicationContext ... 
Caused by:     org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [app-context.xml]; 
  

вложенное исключение java.io.FileNotFoundException: class path resource [app-context.xml] cannot be opened because it does not exist

Этот файл существует и находится в папке ресурсов для приложения. Если я скопирую app-context.xml файл в папку util.jar ресурсов, ошибка будет устранена, но это обходное решение невозможно в качестве решения.

Комментарии:

1. Какую трассировку стека вы получаете и что именно в вашем коде не удается выполнить?

2. java.lang. Исключение IllegalStateException: не удалось загрузить ApplicationContext … Вызвано: org.springframework.beans.factory. Исключение BeanDefinitionStoreException: исключение IOException, анализирующее XML-документ из ресурса пути к классу [app-context.xml ]; вложенным исключением является java.io.FileNotFoundException: ресурс пути к классу [app-context.xml ] не может быть открыт, потому что он не существует

3. Пожалуйста, обновите сообщение трассировкой стека, а также опубликуйте код, который генерирует трассировку стека.

4. Сбивает с толку. Вы говорите: «У меня есть зависимый jar, которому необходимо получить доступ к файлам в ресурсах jar, а также к ресурсам проекта, который я создаю, который зависит от него». И, судя по исходному коду, App класс, который принадлежит проекту, пытается получить доступ к файлу, которого нет в util.jar ,но в самом проекте.

5. правильно, ему необходимо получить доступ к ресурсам, которые расположены в обоих. Я не утверждаю, что в настоящее время у меня нет какой-то неправильной конфигурации, но прямо сейчас загружается приложение util-context.xml просто отлично, а также загружает app.context просто отлично, если я скопирую его в папку ресурсов jar. Я не знаю, почему app.jar не находит вещи, расположенные в папке ресурсов приложения, но может найти ресурсы в папке ресурсов jar.

Ответ №1:

Проверьте пути (с учетом регистра!) в созданных банках с помощью 7zip / WinZip или около того.

Может быть, попробовать

 classpath:/app-context.xml
  

И util-context.xml кажется неправильным.

Далее maven использует каталог test / resources для тестового кода.

 app/src/test/java/com/my/app/App.class
app/src/test/resources/app-context.xml
  

Комментарии:

1. и оказывается, кто-то решил использовать resources/app-context.xml и добавьте /resources в путь к классу eclipse (о котором maven ничего не знает). Перемещение папки ресурсов в app / src / test / resources составляло не менее 50% моей проблемы.