Externe Java Klasen zur Laufzeit einbinden

Tashtego

Tashtego

Aktives Mitglied
Hallo.

Ich möchte einen Prototpyen schreiben. In diesem möchte ich Klassen einer externen JAR-Datei "nachladen", Object dieser Klasse instanzieren und mit Werten befüllen. Das ganze wird evtl noch erschwert, weil es jetzt das Modulsystem von Java 9 gibt. Über ein zwei Tips oder Links würd ich mich freuen. Ihr müßt mir das nicht runtercoden, ich könnt nur Starthilfe brauchen.

Danke!
 
Tashtego

Tashtego

Aktives Mitglied
Der Einfachheit halber nehme ich an, daß das einzubindende Modul seine Packages alle exportiert.
 
Tashtego

Tashtego

Aktives Mitglied
Der erste Versuch, der noch nicht klappt bisher...

DynamicClassLoader dynamicClassLoader = (DynamicClassLoader) ClassLoader.getSystemClassLoader();
File file = new File("/path/to/my/classfiles");
URL externalPath = file.toURI().toURL();
dynamicClassLoader.add(externalPath);

Class clazz = dynamicClassLoader.loadClass("com.external.ExternalClass");
Object o = clazz.getDeclaredConstructor().newInstance();
 
Zuletzt bearbeitet:
Tashtego

Tashtego

Aktives Mitglied
ClassNotFoundException :(

Brauche Mal mehr Grundlagen als nur ausprobieren. Wer beschäftigt sich schon mit Classloadern...
 
Tashtego

Tashtego

Aktives Mitglied
Hm eventuell war es auch die NoClassDef. Bin Grad nicht am PC aber eine der beiden exceptions wars.
 
Tashtego

Tashtego

Aktives Mitglied
Hm ok also ich hab jetzt ein laufendes Beispiel hinbekommen. Zum einen muß man den CustomClassLoader via jvm Paramter angeben:

-Djava.system.class.loader=com.test2.DynamicClassLoader

Die Grundlage hierfür hat die folgende Klasse gebildet:

https://github.com/update4j/update4j/blob/master/src/main/java/org/update4j/DynamicClassLoader.java

Zum anderen hab ich die Methode appendToClassPathForInstrumentation dort von private auf public gestellt und dann einen Pfad zum externen JAR angegeben.

Also GEHEN tut es. ABER ich möcht den Mist irgendwie auch verstehen. Hab mal baeldung überflogen. Aber ein deutscher Artikel zum Thema Classloading oder Instrumentation (was wohl neuer ist als Classloading?) wär cool... Ich hab nen Prototyp der geht, aber kein Verständnis, was mich stört ;(


update:
hm https://jaxenter.de/james-bond-laesst-gruessen-28256
Instrumentieren klingt eher nach Bytecode Manipulation zur Laufzeit. Ich wollte nur nen Jar hinzufügen.
 
Tashtego

Tashtego

Aktives Mitglied
Ich denke fast, ich kann das ohne nen CustomClassloader nur mit URLClassLoader hinbekommen. Das teste ich gerade.
 
Tashtego

Tashtego

Aktives Mitglied
ok zu kompliziert gedacht. wenn man also externe jars laden will, geht das wirklich einfach über den url class loader

URL[] urls = new URL[1];
URL url = new URL("file:/home/xyz/xyz/external.jar");
urls[0] = url;
URLClassLoader loader = new URLClassLoader(urls);
Class clazz = loader.loadClass("com.external.ExternalClass");
Object o = clazz.getDeclaredConstructor().newInstance();
 
mihe7

mihe7

Top Contributor
Ja, wenn Du nicht den System-ClassLoader ersetzen willst, ist das kein Problem. Sonst gilt:

"If a custom system class loader is configured (by means of the system property java.system.class.loader as specified in thegetSystemClassLoader method) then it must define the appendToClassPathForInstrumentation method as specified inappendToSystemClassLoaderSearch. In other words, a custom system class loader must support the mechanism to add an agent JAR file to the system class loader search." (s. Loading agent classes and the modules/classes available to the agent class in https://docs.oracle.com/javase/9/docs/api/java/lang/instrument/package-summary.html)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F externe module. geht das in Java? Allgemeine Java-Themen 3
C Externe Bilder in Java-Applet blocken? Allgemeine Java-Themen 2
W Java und externe Anwendungen Allgemeine Java-Themen 3
J Externe Ansteuerung (Motor,Licht) mit Java? Allgemeine Java-Themen 4
OSchriever Externe Anwendung beenden Allgemeine Java-Themen 41
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
X Threads Externe Variablen in Run Methoden verändern Allgemeine Java-Themen 4
V JTable Externe Lib Allgemeine Java-Themen 2
JavaWolf165 Externe .jar-Dateien in .jar-Datei intigrieren Allgemeine Java-Themen 0
N Externe Skripte Allgemeine Java-Themen 9
L JavaFX JavafX externe FXML laden? Allgemeine Java-Themen 4
S Externe Eclipse Projekte dynamisch einbinden Allgemeine Java-Themen 3
Thallius Externe .jar dynamisch einbinden Allgemeine Java-Themen 5
W Threads Mit Thread und Runtime externe Programme öffnen Allgemeine Java-Themen 0
M Externe Jar sehr langsam Allgemeine Java-Themen 23
C Prozesssteuerung - Speicherhungrige externe Programme werden blockiert Allgemeine Java-Themen 2
G Eclipse Wie mit Ant build.xml externe Jar´s einbinden? Allgemeine Java-Themen 5
M Wie externe System-Ressourcen zwangsweise freigeben Allgemeine Java-Themen 2
B Externe Programme und ProcessBuilder Allgemeine Java-Themen 5
nrg Externe Library Lizenzen Allgemeine Java-Themen 14
D externe programme / Jdesktoppane, ... Allgemeine Java-Themen 6
U Externe Logiken möglich? Allgemeine Java-Themen 8
G externe Properties datei aus Jar File heraus lesen Allgemeine Java-Themen 12
G externe Steuerung von Sprachsoftware Allgemeine Java-Themen 3
B Eclipse externe Dateien mit einbinden Allgemeine Java-Themen 10
H externe JARs in eigenem Programm-Jar einbinden. Allgemeine Java-Themen 5
N externe Anwendung aktivieren (nicht starten!) Allgemeine Java-Themen 3
H Externe Prozesse und Inputstreams - ausgabe in JTextArea Allgemeine Java-Themen 3
oliver1974 Zugriff auf externe .class Dateien (und resourcen) aus JAR Allgemeine Java-Themen 11
G externe package Allgemeine Java-Themen 7
E externe Anwendung aufrufen und sich selbst beenden Allgemeine Java-Themen 8
J Externe File Emails für JavaMail Allgemeine Java-Themen 4
J Externe .jar bibis in programm .jar einbinden? Allgemeine Java-Themen 9
R externe Libraries in jar-file Allgemeine Java-Themen 16
R Kontrolle über Externe Prozess Allgemeine Java-Themen 5
O Externe Jars in eigene JAr packen in Eclipse Allgemeine Java-Themen 5
M Standardpfad für externe Dateien? Allgemeine Java-Themen 2
R aus Jar auf externe XML-Datei zugreifen Allgemeine Java-Themen 14
I externe Namensliste auslesen Allgemeine Java-Themen 13
M Java2exe Externe Packages einbinden! .JAR und sowas Allgemeine Java-Themen 7
thE_29 Externe (unbekannte) Klasse nutzen Allgemeine Java-Themen 11
AGW Java zu Kotlin Allgemeine Java-Themen 5
bax7891 Java Damals - Java Heute Allgemeine Java-Themen 6
tm.grp Teilsummenproblem in Java Allgemeine Java-Themen 2
N Value Wert aus HTML-Button mittels thymeleaf spring an java übergeben Allgemeine Java-Themen 0
N Lottowebsite programmieren mittels Java, HTML,.... Allgemeine Java-Themen 7
O Input/Output java.io.File beenden Allgemeine Java-Themen 5
S Java class direved from inner class Allgemeine Java-Themen 6
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
T Meine Frage lautet wie ich 2 CSV Dateien miteinander in Java verbinde und Spalten die zueinander gehören durch den gleichen Key zusammen ausgebe? Allgemeine Java-Themen 5
H Java SDK unter 32 Bit Allgemeine Java-Themen 5
P Unterschied Java SE und Java EE Allgemeine Java-Themen 2
B Methoden Java Getter und Setter Methoden Allgemeine Java-Themen 9
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
S Java-Task-Management-Tool für Windows und Mac selber programmieren Allgemeine Java-Themen 4
M java.util.prefs.Preferences "not visible" Allgemeine Java-Themen 7
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
J Java Filechooser Speichern Allgemeine Java-Themen 8
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
F Fehlermeldung: java.lang.NoClassDefFoundError: org/apache/commons/net/ntp/NTPUDPClient Allgemeine Java-Themen 6
T Java-Anfänger möchte professionell coden lernen Allgemeine Java-Themen 23
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Java Dom Childelemente von de Childelemente von den Childelement bekommen Allgemeine Java-Themen 1
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
Z Welches GUI Framework für Java ist aktuell? Allgemeine Java-Themen 16
I Java und XML Allgemeine Java-Themen 10
K Java Programmfluss Allgemeine Java-Themen 13
R Delete files before creating new from temp using Java file method Allgemeine Java-Themen 1
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
N Convert.FromBase64 von C# für Java Allgemeine Java-Themen 11
C Java RMI Client - Server Allgemeine Java-Themen 0
Ullenboom Ein neues Java-Buch entsteht, willst du helfen? Allgemeine Java-Themen 7
N fixed-keyword von C# für Java Allgemeine Java-Themen 6
G Java Reflections Allgemeine Java-Themen 6
bueseb84 Java : Cannot find Symbol Allgemeine Java-Themen 7
N E-Mail per Java verschicken Allgemeine Java-Themen 2
Y Java Bruttoberechnen + runden Methode Allgemeine Java-Themen 1
Y Java Methoden unterschiedliche Zahlenreihen Allgemeine Java-Themen 2
M java.io.EOFException bei einem DataoutputStream ?! Allgemeine Java-Themen 2
D Java Kuriositäten / Rätsel Allgemeine Java-Themen 9
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
1 Java Scanner Allgemeine Java-Themen 2
J Key Keystore Certificate Java Android Development Allgemeine Java-Themen 1
J Java KeyStore Schlüssel Allgemeine Java-Themen 10
F Sich automatisch aufrufende Java-Methoden Allgemeine Java-Themen 2
M Java model class ? Allgemeine Java-Themen 9
C Java Script Pause berechnen Allgemeine Java-Themen 5
P Input/Output entfernte Datei mit Java öffnen ohne Download Allgemeine Java-Themen 5
M Java komplexe Map mit 2 values ? Allgemeine Java-Themen 8
bueseb84 Java Deploy to JFrog Repository Allgemeine Java-Themen 3
R Java mit Selenium "Geister"Loop Allgemeine Java-Themen 1
M SQL-Developer Installation: Unable to launch the Java Virtual Machine Located at path msvcr100.dll Allgemeine Java-Themen 1
L Java frage Allgemeine Java-Themen 3
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M this application requires a java runtime environment 1.8.0 Allgemeine Java-Themen 2
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
N Kurs Java Oraclce Certified Allgemeine Java-Themen 0

Ähnliche Java Themen

Anzeige

Neue Themen


Oben