tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
1198
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    r3zn1k r3zn1k ist offline Grünschnabel
    Registriert seit
    Aug 2007
    Ort
    Kloten (Schweiz)
    Beiträge
    3
    Guten Tag

    Ich wusste nicht in welches Unterforum ich mit diesem Thread hinsollte, darum poste ich es einfach mal hier

    Das man die JAR-Dateien im "manifest.mf" unter Bundle-ClassPath angeben kann weiss ich. Jedoch habe ich das Problem das ich weder die Anzahl noch den Namen der JAR-Dateien kenne.

    Ich kenne lediglich Verzeichnis, in dem sich die Libraries befinden.
    Ich möchte alle diese Libraries aus diesem Verzeichnis in einem Plugin laden, um sie über Wrapper-Klassen anderen Plugins zur verfügung stellen zu können.

    Nun lautet meine Frage:
    Wie kann ich alle Libraries aus einem Verzeichnis laden, damit sie das Plugin, in dem sie geladen werden, kennt?

    Vielen Dank für eure Hilfe!
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Über einen URLClassLoader würde das gehen. Ich weiß aber natürlich nicht genau was du vorhast.
     

  3. #3
    r3zn1k r3zn1k ist offline Grünschnabel
    Registriert seit
    Aug 2007
    Ort
    Kloten (Schweiz)
    Beiträge
    3
    Das habe ich auch schon probiert. Bis jetzt bin ich jedoch erst soweit:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
        protected static void loadClasses() {
            File libDir = getLibDir();
            if (libDir == null)
                return;
            
            ArrayList<URL> urls = new ArrayList<URL>();
            for (String file : libDir.list()) {
                if (file.endsWith(".jar")) {
                    try {
                        urls.add(new URL("jar", "", "file:" + new File(file).getAbsolutePath() + "!/"));
                    } catch (MalformedURLException e) {
                        Logger.getLogger(Test.class).error("Couldn't add " + file + " to the library-list", e);
                    }
                }
            }
     
            URLClassLoader classLoader = URLClassLoader.newInstance(urls.toArray(new URL[] {}));    
            
            String clazz = "xxx.AnyClass";
            try {
                [B]classLoader.loadClass(clazz)[/B];
            } catch (ClassNotFoundException e) {
                Logger.getLogger(Test.class).error("Couldn't load class " + clazz, e);
            }
            
        }

    classLoader.loadClass(clazz) wirft eine java.lang.ClassNotFoundException.
     

  4. #4
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    URLs nach möglichkeit nicht selber konstruieren. In deinem Fall
    file.toURI().toURL()
     

  5. #5
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Was halt grundsätzlich suspekt ist, dass du Eclipse RCP (und damit einen OSGi Container) benutzt und dann irgendwelchen Classloaderfoo machen willst. IMHO ist es an der Stelle Zeit, nen Schritt zurück zu machen und zu überlegen, was das eigentlich Ziel ist, was du erreichen willst. Warum willst du beliebige JAR's laden? Warum nutzt du nicht das Extenderpattern um beim deployen eines Bundles in den OSGi Container darauf zu reagieren.

    Grundsätzlich: was hast du vor?

    Gruß
    Ollie
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  6. #6
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    Was halt grundsätzlich suspekt ist, dass du Eclipse RCP (und damit einen OSGi Container) benutzt und dann irgendwelchen Classloaderfoo machen willst. IMHO ist es an der Stelle Zeit, nen Schritt zurück zu machen und zu überlegen, was das eigentlich Ziel ist, was du erreichen willst. Warum willst du beliebige JAR's laden? Warum nutzt du nicht das Extenderpattern um beim deployen eines Bundles in den OSGi Container darauf zu reagieren.
    So abwegig ist das IMHO nicht. Stell dir doch nur mal vor du baust einen generischen Datenbank-Client als Eclipse RCP Anwendung. Dort willst du dann vielleicht die JDBC Treiber jars dynamisch in der Anwendung angeben können.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  7. #7
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Das ist durchaus richtig. Aber die initiale Aussage war, einen Ordner voll JARs laden zu wollen, was für mich nach einer Art Pluginsystem klingt. Da aber mit OSGi schon eines da ist, glaub ich dass es sinn machen kann, wie man genau das darüber abbildet. Ob das jetzt wirklich so ist, hängt davon ab, was r3zn1k genau vorhat, deswegen meine Frage.

    REINHAUN!
     
    In theory, there is no difference between theory and practice. In practice, there is!

    www.olivergierke.de

  8. #8
    smo6 Tutorials.de Gastzugang
    Wie sieht es denn aktuell in der Thematik aus? Hab nämlich ein ähnliches Problem.
    @r3zn1k: Hast du das Problem jetzt gelöst oder wie schauts aus?
     

Ähnliche Themen

  1. Jar's in Applikation dynamisch nachladen
    Von DaSuckOOr im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 12.08.09, 11:37
  2. Eclipse GMF in eigener Applikation nutzen?
    Von Woggly im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 10.06.08, 20:28
  3. Bilder dynamisch laden und in MovieClip laden
    Von Nambot im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 28.02.08, 19:38
  4. Antworten: 2
    Letzter Beitrag: 16.03.06, 13:59
  5. Bildgallerie Dynamisch erzeugen: Welche Applikation?
    Von macflac im Forum HTML-Editoren
    Antworten: 2
    Letzter Beitrag: 18.11.04, 01:34

Stichworte