Spring Kann die applicationContext.xml nicht finden

LostForce

Mitglied
Hallo Community,

ich habe mein Problem jetzt schön öfters gegooglt. Ich bin auch auf viele Antworten gestoßen, allerdings hat keine geholfen. Bereits sind schon einige Stunden Recherche drauf gegangen, sodass ich mich nun dafür entscheide meine Frage in einem Forum zu stellen.

Ich habe ein neues Projekt in eclipse mittels maven gestartet. Nachdem ich dies getan habe, habe ich als dependencies Hibernate und Spring hinzugefügt (... und eine weitere).
Das Projekt ist kein normales "public static void main" Projekt, sondern vielmehr ein Plugin für eine andere Software (Bukkit, falls das jemanden etwas sagt).

Nun zu meinem Problem:
Wenn ich mein Plugin mittels maven gebaut habe und es über die andere Software versuche zu starten, erhalte ich folgende Fehlermeldung:

org.bukkit.plugin.InvalidPluginException: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException:
class path resource [applicationContext.xml] cannot be opened because it does not exist

Die applicationContext.xml befinden sich in meinem src/main/resources Ordner. Dieser Ordner ist auch ein Teil des classpaths. Das habe ich mittels winRar kontrolliert. Nach dem erfolgreichen bauen des Projektes, befindet diese sich nämlich im dem root Ordner.
Bild:
capVN.png


Zudem benutze ich das maven-shade-plugin, um alle dependencies in eine jar zu packen.
Sieht dann folgendermaßen aus:
Code:
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <shadedArtifactAttached>true</shadedArtifactAttached>
                            <transformers>
                                <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <manifestEntries>
                                        <mainClass>com.lostforce.core.LostForceCore</mainClass>
                                    </manifestEntries>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

Die applicationContext.xml kann aufjedenfall gefunden werden! Dies habe ich mit diesem Codeschnipsel überprüft:
Code:
System.out.println("Is null: " + (getClassLoader().getResourceAsStream("applicationContext.xml") == null));
Diese Datei versuche ich beim starten mittels diesem Aufruf zu laden:
Code:
context = new ClassPathXmlApplicationContext("applicationContext.xml");

Mein Projekt sieht so aus:
cdmQN.png


Zur Info: Wenn ich das Programm mittels "public static void main(...)" aus eclipse heraus starte, dann funktioniert es komischer weise. Liegt es nun an dem Plugin Konzept?
 

LostForce

Mitglied
Problem alleine gelöst! Da mein Projekt ein plugin ist, musste ich den vom Hauptprogramm bekannten Classloader überschreiben.
Lösung:

Code:
public class SpringBootstrap {
	
	private final ClassLoader classLoader = SpringBootstrap.class.getClassLoader();
	
	public ApplicationContext startupSpring() {
		ApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml") {
			protected void initBeanDefinitionReader(XmlBeanDefinitionReader reader) {
				super.initBeanDefinitionReader(reader);
				reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE);
				reader.setBeanClassLoader(classLoader);
				setClassLoader(classLoader);
			}
		};
		return context;
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Spring applicationContext Application Tier 3
MQue Spring ApplicationContext Application Tier 20
C ApplicationContext mehrfach laden? Application Tier 3
J @Asynchronous JEE6 funktioniert nicht Application Tier 4
T Spring Transaktionen funktionieren nicht Application Tier 1
P Spring RequestMapping: PathVariable Die Methode wird nicht aufgerufen Application Tier 2
I EJB 3.1 Timer @Schedule wird nicht ausgeführt?! Application Tier 2
2 EJB: Dependecy Injection funktioniert nicht Application Tier 13
B Application startet nicht mehr nach löschen einer nicht verwendeten KLasse Application Tier 2
V JBoss 5 mag @Service nicht Application Tier 2
F Tomcat startet nicht (java.net.BindException) Application Tier 30
K @Asynchronous funktioniert nicht Application Tier 2
B Message-Driven Bean reagiert nicht Application Tier 3
N Anwendung startet nicht, wenn die Datenbank gestoppt ist Application Tier 5
A @Schedule funktioniert nicht mit Glassfish Application Tier 2
A Stateful Session Bean will nicht "stateful" sein Application Tier 18
L Mein erstes Struts 2 Programm welches nicht läuft Application Tier 5
J EJB: Local-Annotation wird in Eclipse nicht erkannt Application Tier 7
T Tomcat 6: JSP-Exception beinhaltet nicht den wahren Ursprungsort Application Tier 4
S findet lookup("KundenDAOIml/remote") nicht Application Tier 9
M Entity Bean wird nicht in stateless Session Bean injeziert Application Tier 3
A Spring: JSP nimmt style.css nicht an Application Tier 3

Ähnliche Java Themen

Neue Themen


Oben