#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% моей проблемы.