Ich habe ein Applet in einer Sandbox, aber das sollte keinen Unterschied machen.
Das Applet besteht aus 2 Gläsern. Wenn ich beide Dateien auf der gleichen Domain1 hoste, ist alles in Ordnung. Aufgrund bestimmter besonderer Umstände muss ich jar2 auf einer anderen Domäne2 hosten.
Im Applet-Tag liste ich beide Dateien archive="jar1.jar, http://domain2.com/jar2.jar ".
Zunächst scheint es gut zu funktionieren. Beide Jars sind geladen und alles funktioniert einwandfrei. Sobald ich jedoch versuche, auf eine Ressource (z. B. ein Bild) von INNERHALB einer der Jars zuzugreifen, gibt es ein Problem.
Wie erhalte ich Ressourcen aus meinen Gläsern? Ich erhalte Ressourcen, indem ich zunächst eine URL für den Ort der Ressource erhalte:
public static URL getURL(String name) {return ResUtils.class.getResource(path);}
Wenn ich beide Jars auf Domain1 hoste, gibt diese Methode eine URL zurück. Wenn sie auf zwei Domänen gehostet werden, gibt getURL(...) NULL zurück, was dann zu einer Ausnahme beim Abrufen der Ressource führt:
Caused by: java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
Ich schätze, ResUtils.class.getResource verwendet seinen Classloader, um eine URL zurückzugeben. Aus irgendeinem Grund, wenn beide Jars auf zwei Domains gehostet werden, geben zusätzliche Aufrufe von getRessource() NULL zurück.
Meine Frage ist also:
- Warum gibt getURL NULL zurück?
Ist das Java-Plugin so konzipiert, dass es das Hosten dieser Jars auf verschiedenen Domänen nicht zulässt? Wie muss ich meine Ressourcen laden, wenn ich die Jars auf verschiedenen Domains hoste?