tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
581
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    AceTheFace AceTheFace ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    20
    Hallo,

    folgende Situation:

    Mittels eines PluginFrameworks wird der gesamte Classpath nach Klassen gesucht, die ein bestimmtes PluginInterface implementieren. Das funktioniert auch wunderbar, solange es sich um "normale" Java-Anwendungen handelt.
    Läuft das ganze allerdings über einen Servlet-Container (bspw. Tomcat) enthält der Classpath den Pfad zu WEB-INF/classes leider nicht, weswegen die entsprechenden Plugins nicht gefunden werden.
    Klar könnte ich nun über System.setproperty den lokalen Pfad zum Classpath hinzufügen, aber das wäre ja äusserst unschön.

    Da das PluginFramework an sich absolut portabel bleiben soll, kann ich dort auch nicht mit Dingen wie ServletContext arbeiten.
    Ein bißchen googlen brachte mir zumindest schon mal mehrere Seite zum Thema Classloader.
    Ich komme auch per Thread.currentThread().getContextClassLoader(); an den Classloader (webappClassLoader) des Servlets, der also repository auch /WEB-INF/classes enthält, aber ich habe keine Ahnung was ich damit denn nun anstellen kann.

    Eine Alternative wäre es, den PluginLoader so zu ändern, dass er nicht mehr über den Classpath sucht. Dann bräuchte ich allerdings Hilfe, wie ich denn alle für einen ClassLoader sichtbaren Dateien bekommen.

    Vielleicht hat ja jemand einen Tipp für mich.

    Gruß,
    Ace
    Geändert von AceTheFace (18.12.06 um 18:08 Uhr)
     

  2. #2
    AceTheFace AceTheFace ist offline Mitglied
    Registriert seit
    May 2006
    Beiträge
    20
    Also meine momentane Lösung sieht so aus:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    String classPath = System.getProperty("java.class.path");
    try {
                String context = Thread.currentThread().getContextClassLoader().getResource("/").getFile();
                if(!classPath.contains(context)) {
                    classPath += ":"+context;
                    System.setProperty("java.class.path",classPath);
                }
            }
            catch(NullPointerException e) {    
            }

    Funktioniert sowohl bei Servlets als auch bei "normalen" Anwendungen. Wenn jemand noch schönere Lösungen hat, immer her mit

    Gruß,
    Ace
     

Ähnliche Themen

  1. Jar Dateien aus jar Datei in Classpath Aufnehmen
    Von Thomas Darimont im Forum Java
    Antworten: 5
    Letzter Beitrag: 08.06.11, 10:36
  2. import classes
    Von sirvival im Forum Java
    Antworten: 3
    Letzter Beitrag: 05.09.06, 22:45
  3. Div + Classes
    Von vocki im Forum CSS
    Antworten: 5
    Letzter Beitrag: 08.03.05, 13:44
  4. Ma wieder die lieben classes
    Von Strahleman im Forum CSS
    Antworten: 7
    Letzter Beitrag: 06.02.03, 22:28
  5. Classes
    Von js-mueller im Forum PHP
    Antworten: 2
    Letzter Beitrag: 24.07.02, 02:08