Danke, aber das war nicht die Lösung. Ich fand heraus, warum es bei mir nicht funktionierte.
Da ich eine Erklärung abgegeben hatte:
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Ich dachte, ich würde auf das Stammverzeichnis des Projekts verweisen, wenn die Datei beans.xml vorhanden war. Dann habe ich die Konfigurationsdatei in src / main / resources abgelegt und die Initialisierung geändert in:
ApplicationContext context = new ClassPathXmlApplicationContext("src/main/resources/beans.xml");
Es war immer noch eine IO-Ausnahme.
Dann wurde die Datei in src / main / resources / belassen, aber ich habe die Deklaration geändert in:
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
und es hat das Problem gelöst - vielleicht ist es für jemanden hilfreich.
danke und Prost!
Bearbeiten:
Da ich viele Leute für die Lösung begebe und vor einigen Jahren als Student erste Erfahrungen mit Spring gemacht habe, möchte ich kurz erklären, warum es funktioniert.
Wenn das Projekt kompiliert und gepackt wird, werden alle Dateien und Unterverzeichnisse von 'src / main / java' im Projekt in das Stammverzeichnis des gepackten JARs (das Artefakt, das wir erstellen möchten) verschoben. Die gleiche Regel gilt für 'src / main / resources'.
Dies ist eine Konvention, die von vielen Tools wie maven oder sbt beim Erstellen eines Projekts eingehalten wird (Hinweis: als Standardkonfiguration!). Wenn sich Code (aus dem Beitrag) im laufenden Modus befand, konnte er nichts wie "src / main / resources / beans.xml" finden, da sich beans.xml im Stammverzeichnis von jar befand (kopiert nach / bean) .xml im erstellten jar / ear / war).
Bei Verwendung von ClassPathXmlApplicationContext lautete die richtige Speicherortdeklaration für Beans-XML-Definitionen in diesem Fall "/beans.xml", da dies der Pfad ist, zu dem er in jar und später in classpath gehört.
Sie kann überprüft werden, indem Sie ein Glas mit einem Archivierungsprogramm (dh rar) entpacken und dessen Inhalt anhand der Verzeichnisstruktur anzeigen.
Ich würde empfehlen, Artikel über classpath als Ergänzung zu lesen.