Дякую, але це не було рішення. Я зрозумів, чому це не працює для мене.
Оскільки я зробив декларацію:
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Я думав, що звернусь до кореневого каталогу проекту, коли там є файл beans.xml. Потім я помістив файл конфігурації в src / main / resources і змінив ініціалізацію на:
ApplicationContext context = new ClassPathXmlApplicationContext("src/main/resources/beans.xml");
це все ще був виняток IO.
Потім файл залишили в src / main / resources /, але я змінив декларацію на:
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
і це вирішило проблему - можливо, це комусь буде корисно.
дякую і вітаю!
Редагувати:
Оскільки у мене багато людей стикається з рішенням і мав перший досвід роботи з Весною ще студентом кілька років тому, я відчуваю бажання коротко пояснити, чому це працює.
Коли проект компілюється та пакується, усі файли та підкаталоги з 'src / main / java' у проекті переходять у кореневий каталог упакованої jar (артефакт, який ми хочемо створити). Те саме правило застосовується до 'src / main / resources'.
Це домовленість, яку поважають багато інструментів, таких як maven або sbt, в процесі побудови проекту (примітка: як конфігурація за замовчуванням!). Коли код (із допису) був у робочому режимі, він не зміг знайти нічого подібного до "src / main / resources / beans.xml" через те, що beans.xml знаходився у кореневій частині jar (скопійований у / beans .xml у створеному jar / ear / war).
При використанні ClassPathXmlApplicationContext, належним чином декларація про розташування для xml-визначень бобів була "/beans.xml", оскільки це шлях, куди він належить у jar, а пізніше в classpath.
Це можна перевірити, розпакувавши банку за допомогою архіватора (тобто rar) і побачити її вміст зі структурою каталогів.
Я б рекомендував читати статті про шлях до занять як додаткові.