Ich habe mir die Fragen zu Spring PropertyPlaceholderConfigurer
Beans und den zugehörigen Klassenpfaden angesehen, aber mein Problem konnte bisher nicht gelöst werden. Ich mache einige Änderungen an einem älteren Programm namens myApp
, das als ein Jar läuft und eine externe Eigenschaftendatei namens myApp.properties' file, which lives in a directory called 'config' within my application directory. In the
hat. ApplicationContext.xml 'Datei für `myApp' Ich habe ein Bean definiert, um in dieser externen Eigenschaftendatei zu lesen:Festlegen des Klassenpfads für eine Spring PropertyPlaceholderConfigurer-Bean
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:myApp.properties</value>
</list>
</property>
Diese Anwendung funktioniert nur gut, wenn gebaut und in Netbeans laufen, weil ich den config
Ordner zusammen mit allen JAR-Abhängigkeiten für Builds und Läufe umfassen. Aber wenn ich versuche, es von der Kommandozeile ausgeführt werden unter Verwendung von java -jar myApp.jar
, ich die folgende Fehlermeldung erhalten:
08/01/2016 15:37:18.562 | ERROR | Unable to start the application. | org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [myApp.properties] cannot be opened because it does not exist
ich, dass ich den Classpath korrekt angeben, so dass Frühling weiß, wo die Eigenschaften zu finden, doch ich bin nicht sicher, wie genau dies zu tun, so würden alle Hinweise geschätzt ...
Was bedeutet das "*" nach "config"? Ich nehme an, es ist ein Wildcard-Charakter? –
Tatsächlich funktioniert die Verwendung der Optionen -classpath und -jar nicht, da der angegebene Klassenpfad zugunsten der in der Datei manifest.mf enthaltenen JAR ignoriert wird. Also musste ich nur -classpath verwenden und die Hauptklasse explizit angeben, anstatt nur die JAR –
. Außerdem habe ich heute Nachmittag in meiner SO-Studie gelernt, dass das '*' speziell für JAR-Dateien (und vielleicht für Klassendateien) gedacht ist (IIRC), so dass das Programm die Datei "Meine Eigenschaften" sowieso nicht gefunden hätte ... –