Spring Kann die applicationContext.xml nicht finden

Diskutiere Kann die applicationContext.xml nicht finden im Application Tier Forum; Hallo Community, ich habe mein Problem jetzt schön öfters gegooglt. Ich bin auch auf viele Antworten gestoßen, allerdings hat keine geholfen....

  1. LostForce
    LostForce Neues 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:
    [​IMG]

    Zudem benutze ich das maven-shade-plugin, um alle dependencies in eine jar zu packen.
    Sieht dann folgendermaßen aus:
    Code (Text):

    <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 (Text):
    System.out.println("Is null: " + (getClassLoader().getResourceAsStream("applicationContext.xml") == null));
    Diese Datei versuche ich beim starten mittels diesem Aufruf zu laden:
    Code (Text):
    context = new ClassPathXmlApplicationContext("applicationContext.xml");
    Mein Projekt sieht so aus:
    [​IMG]

    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?
     
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. LostForce
    LostForce Neues Mitglied
    Problem alleine gelöst! Da mein Projekt ein plugin ist, musste ich den vom Hauptprogramm bekannten Classloader überschreiben.
    Lösung:

    Code (Text):

    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;
        }
    }

     
     
Die Seite wird geladen...

Kann die applicationContext.xml nicht finden - Ähnliche Themen

Zugriff auf Attribut einer unbekannten Klasse erhalten
Zugriff auf Attribut einer unbekannten Klasse erhalten im Forum Java Basics - Anfänger-Themen
Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren?
Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren? im Forum Java Basics - Anfänger-Themen
Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..?
Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? im Forum Allgemeine Java-Themen
Was kann java?
Was kann java? im Forum Allgemeine Java-Themen
Kann das so gehen? (Methode)
Kann das so gehen? (Methode) im Forum Java Basics - Anfänger-Themen
Thema: Kann die applicationContext.xml nicht finden