Ressourcen aus externer jar als Stream/URL laden.

T-Head

Grünschnabel
Hallo,

ich musste für ein Projekt ein Template-Manager programmieren welcher Grafiken aus einer externen jar-Datei als Stream/URL lädt.

Zuerst habe ich ein Interface erstelle, welches sich im Template als auch im Hauptprogramm befindet:

Code:
public interface TemplateIF {
    public String[] getVersion();
    public InputStream getMusic();
    public URL getPreview();
}

Alle Methoden werden in der Template-Class überschrieben. Bsp.:

Code:
@Override
public InputStream getMusic() {
    return getClass().getResourceAsStream( "audio/classic.mp3" );
}

@Override
public URL getPreview() {
    return getClass().getResource( "gfx/pre.png" );
}

Daraus habe ich in jar-Paket erstellt, welches dem eigentlichen Programm zur Verfügung steht. Im Hauptprogramm lade ich dann die Klasse "Template" aus der externen jar-Datei Über den URLClassLoader:

Code:
final URL url = new URL( "file", "localhost", 0, file.getAbsolutePath() );
URLClassLoader ucl = new URLClassLoader( new URL[]  { url } );
final Class eTemp = ucl.loadClass( "Template" );
aTemp = (TemplateIF)eTemp.newInstance();

Dieser stellt mir dann die Klasse "Template" aus der jar-Datei zur Verfügung.
Jetzt das Problem, ich entwickle unter Linux, hier funktioniert alles so wie es soll, der Sound und die Grafiken werden alle geladen und wiedergegeben, doch lasse ich das Programm auf einem Windows XP Rechner laufen, werden die Grafiken(URL) und der Sound(InputStream) nicht geladen, nur noch die folgende Methode funktioniert:

Code:
public String[] getVersion();

Rufe ich eine der Anderen Methoden auf kommt aber auch keine Exception, es geschieht einfach gar nichts:

Code:
public InputStream getMusic();
public URL getPreview();

Hatte jemand schon mal solche Probleme oder eine Idee, woran das liegen könnte?
Ich habe auch schon gedacht, dass vielleicht die Trenner also ("/") unter Windows nicht funktionieren, aber auch das hat nichts gebracht. Auch mein Prof hat leider keine Idee gehabt, an was es liegen könnte.

Mit freundlichen Grüßen
T-Head
 
Zurück