Javas Classloader im Vergleich zu Gläsern innerhalb von Gläsern

8

Wir haben eine ausführbare JAR-Datei, die manchmal andere JAR-Dateien enthält. (Die ganze Sache ruht auf vier anderen heruntergeladenen JARs, die auf der Rückseite einer riesigen im Weltraum bereitgestellten Schildkröte reitend sind.) Zur Laufzeit laden wir diese verschachtelte JAR-Datei dynamisch, indem sie Folgendes tun:

%Vor%

Diese Art von Technik wurde hier schon einmal erwähnt; Links enthalten dieses und dieser . Der Code, den wir derzeit haben, funktioniert ...

... meistens. Ich würde wirklich gerne einen Weg finden, die temporäre Erstellung und das Kopieren von Dateien zu vermeiden (und eventuell eine Bereinigung, denn wie wir alle wissen, deleteOnExit ist böse ). Die direkt am Start erhaltene URL zeigt immerhin auf ein JAR:

%Vor%

Aber loadClass löst einen ClassNotFound aus.

Kann der URLClassLoader diesen JAR-in-a-JAR-Fall nicht verarbeiten? Oder muss ich etwas für einen oder mehrere der beteiligten Pfade tun (entweder die nestedURL oder die an loadClass übergebene Zeichenfolge), damit dies funktioniert?

    
Ti Strga 25.09.2013, 21:22
quelle

1 Antwort

0

AFAIK der Vanille URLClassloader kann nicht damit umgehen.

Bis jetzt ist das Ihre Antwort.

Abgesehen von Ihrer Lösung sind mir zwei weitere Möglichkeiten bekannt:

  1. Erstellen Sie ein Fettglas (z. B. mit Maven Shade)
  2. Erstellen Sie einen benutzerdefinierten Classloader, aber das ist harte Arbeit.
cbeutenmueller 17.06.2014 21:22
quelle

Tags und Links