7
votes

Est-il possible de résoudre CSS comme une ressource de classe de classe utilisant la soucoupe de vol (XHTML-Renderer)?

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 .

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?

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.


1 commentaires

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).


3 Réponses :


0
votes

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

Constatations post-implémentation

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 dans le JNLP pour pouvoir utiliser url.seturlstreamhandlery () . 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 .

En bref, cela signifie que je am capable d'extraire des fichiers sur le système d'exploitation. Mais c'est agréable d'avoir un chargeur de classe maintenant ...


0 commentaires

6
votes

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());


0 commentaires

3
votes

Ma solution est xxx

et invocation: xxx


0 commentaires