J'essaie de colorier des ressources dans un pot, mais j'ai du mal à faire de la soucoupe de voler pour trouver le CSS sur la classe de classe - Je ne peux pas construire facilement une URL pour pouvoir résoudre ce problème de manière transparente . p>
La soucoupe volante a-t-elle un moyen de spécifier des packages de ressources sur le pavillon de classe pour résoudre les éléments et les images? P>
Remarque: Je suis en cours d'exécution dans une application WebStart qui ne dispose pas des autorisations de rédaction de système de fichiers, une expansion JAR n'est donc pas vraiment une option. P>
3 Réponses :
Il semblerait que la soucoupe volante n'a pas de moyen de spécifier des ressources sur le path de classe, alors je travaille en faisant un ClassePath: Handler URL de protocole à la question liée p>
Il semblerait que certains des locaux de cette question soient invalides. Après avoir écrit mon propre chargeur d'URL de classe de classe, j'ai constaté que vous devez demander En bref, cela signifie que je am em> capable d'extraire des fichiers sur le système d'exploitation. Mais c'est agréable d'avoir un chargeur de classe maintenant ... p>
url.seturlstreamhandlery () code>. En fait, vous devez demander à toutes les autorisations de faire à peu près n'importe quoi de fantaisie (même si vous ne modifiez que votre propre boîte de sable). Voir La liste complète ici . p>
Vous devez mettre en œuvre un userAgentCallback que vous vous nourrissez de XHTMLPANEL, quelque chose comme ceci:
private static class UAC extends NaiveUserAgent { @Override public String resolveURI(String uri) { return uri; } @Override protected InputStream resolveAndOpenStream(String uri) { java.io.InputStream is = null; URL url = UAC.class.getResource(uri); if (url == null) { XRLog.load("Didn't find resource [" + uri + "]."); return null; } try { is = url.openStream(); } catch (java.net.MalformedURLException e) { XRLog.exception("bad URL given: " + uri, e); } catch (java.io.FileNotFoundException e) { XRLog.exception("item at URI " + uri + " not found"); } catch (java.io.IOException e) { XRLog.exception("IO problem for " + uri, e); } return is; } } XHTMLPanel panel = new XHTMLPanel(new UAC());
Ma solution est et invocation: p>
Vous aurez de meilleures chances d'obtenir une réponse si vous montrez un petit exemple de la façon dont vous chargez le fichier et le fichier lui-même. En supposant que FS utilise une urlconnection pour charger des feuilles de styles, les réponses de votre question référencée devraient faire l'affaire (bien qu'ils ne montrent pas réellement le code pour ajouter un résolveur de schéma d'URL).