# Java Klassen aus externet .jar laden und ausführen



## technikfreack (29. Juni 2012)

Hi,

ich arbeite gerade mal wieder an meinem Launcher und möchte eine Klasse aus einer anderen .jar Datei ausführen. Dass soll dann ungefähr vom ablauf her so aussehen:

Launcher.jar
     ||
     ||
      ===============> /home/user/.game/bin/game.jar

Dabei soll es nicht dringend notwendig sein, dass game.jar schon von anfag an existiert sondern es kann auch sein dass die datgei erst noch vom launcher heruntergeladen wird. ausserdem soll der launcher dem game mehrere variablen übergeben. ich habe es schon mit ClassLoadern und ProcessBuildern versucht. habe aber nie den richtigen ansatz gefunden. hat jemand einen rat für mich?

(gutes beispiel ist minecraft und der minecraft launcher)


----------



## Thomas Darimont (29. Juni 2012)

Hallo,

dazu gibt es mehrere Möglichkeiten:
- "Von Hand" via dynamischer Classpath Erweiterung mit URLClassLoader + Reflection
http://www.tutorials.de/java/310207-eine-art-plugin-system.html
http://www.tutorials.de/java/245982-jar-file-nachladen.html

- Via Java Service Loader:
http://www.tutorials.de/java/357126-wieder-mal-java-und-plug-ins.html
http://www.tutorials.de/java/357126-wieder-mal-java-und-plug-ins.html#post1850187
http://www.tutorials.de/java/358931-services-dynamisch-laden.html
http://www.tutorials.de/enterprise-...-den-code-des-hauptprogramms.html#post1873521
http://www.tutorials.de/java/377348-einfacher-plugin-mechanismus-mit-dem-serviceloader-api.html
http://www.tutorials.de/java/310207-eine-art-plugin-system-2.html#post1601381

- Via OSGi:
http://www.tutorials.de/java/260675...ate-equinox-osgi-eclipse-extensionpoints.html
http://www.tutorials.de/java-techno...sgi-konsole-um-eigene-commands-erweitern.html
http://www.vogella.com/articles/OSGi/article.html

Ich empfehle Dir in deinem Fall die Variante mit dem Java Service Loader.

Gruß Tom


----------

