Verwirrung um Classpath und JAR-Datei (context.xml kann von Spring nicht gef. werden)

DarthShader

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine Frage bezüglich JAR-Dateien und dem Classpath - diese Geschichte verwirrt mir gerade total. Es gibt folgende recht simple Ausgangssituation:

Ich verwende ein Ant-skript um einen Release keiner Software zu builden. Das Ant Skript erstellt auch eine JAR-Datei (einer Rich Client Anwendung). Unterhalt des JAR-Verzeichnisses gibt es ein Verz. "lib", darunter sind versch. Bibliotheken, wie z.B. iText oder PDFBox, das sieht dann so aus:

Code:
.\MeinProgramm.jar
.\lib\iText\iText.jar
.\lib\JavaComm\comm.jar
[...]

Die libs liegen also extern auf der Platte, nicht in der JAR-Datei meines Programmes. Das Manifest sieht so aus:

Code:
[...]
Class-Path: lib\iText\iText.jar lib\JavaComm\comm.jar

Das klappt auch wunderbar. Nun möchte ich aber eine andere Datei, eine context.xml Datei zum Konfigurieren des Spring-Kontextes genauso einbinden. Diese liegt dann hier:

Code:
.\MeinProgramm.jar
.\etc\context.xml

Und den Classpath in der Manifest habe ich so erweitert:

Code:
[...]
Class-Path: lib\iText\iText.jar lib\JavaComm\comm.jar etc\context.xml

Wenn ich nun versuche, die Datei context.xml mit Spring zu verwenden:

Code:
new ClassPathXmlApplicationContext( "context.xml" );

dann kann Spring die Datei einfach nicht im Classpath entdecken. Ich habe es zwar nicht ausprobiert, aber ich bin relativ sicher, dass wenn ich sie mi in die Jar-Datei "MeinProgramm.jar" integriere, dann würde Spring sie finden.


Deshalb die Frage: wo ist der Unterschied? Warum werden die libs (.jar) außerhalb der MeinProgramm.jar gefunden, aber die conext.xml nicht? Ist es generell einfach so, dass nur .jar Dateien so geladen werden können (also nicht in der JAR enthalten, aber über den Clathpath)?


Über Eure Hilfe würde ich mich sehr freuen


Vielen Dank!
 
Moin,

bin mir zwar nicht ganz sicher, glaube aber, dass du mit
Code:
Class-Path: lib\iText\iText.jar
angibst, im classpath sollen alle Dateien sein, die unterhalb von iText.jar liegen.
Genauso ist's dann wohl auch mit
Code:
Class-Path: etc\context.xml
sprich
Code:
new ClassPathXmlApplicationContext( "context.xml" );
sucht nach einer Datei etc\context.xml\context.xml ...
Versuch's mal mit
Code:
Class-Path: etc
(evtl. "etc\).
Ansonste gibt's da ja noch den "FileSystemXmlApplicationContext"

Christoph
 

Neue Beiträge

Zurück