Kurze Beschreibung
Diese Klasse verwendet den in javax.tools.toolprovider enthaltenen Javacompiler für die Kompilierung, verwendet IO -Dateien und NIO -Dateien für die entsprechende Pfaderstellung, Lesen und Kopieren und verwendet regelmäßige Ausdrücke, um Paketamen und Verzeichnisse zu konvertieren. Ich habe gerade eine fehlertolerante Integration dieser Dinge erstellt, und es hat keinen technischen Inhalt, so dass es aus Bequemlichkeit ist.
Modul -API
Klasse DynamicReactor: // leere Parameterkonstrukt öffentliche Klasse <?> DynamicCompile (String srcPath); // Eingeben einen angegebenen Quelldateipfad, wenn die Kompilierung und das Kopieren erfolgreich die entsprechende Klasseninstanz zurückgeben, die Klasseninstanz des privaten String -String -Changepackettods (String Package); // Ein juristischer Paket, das den entsprechenden Adding -Javaklassen -Binsen -Binde -Binde -Binde -Paket -Binde -Binde -Binde -Paket -in -to -Path -Binde -Paket, in dem auf den Weg zum Pfad, das auf dem Weg zum Pfad, auf dem Weg zum Pfad, das auf dem Weg verkehrt. Verzeichnis entsprechend.
Quellcode
Import Java.io.BufferedReader; Import Java.io.file; Import Java.io.Filereader; Import Java.io.ioxception; Import Java.nio.File.File; Import Java.nio.File.File.Path; java.util.regex.matcher; import java.util.regex.pattern; import javax.tools.javacompiler; import Javax.tools.toolProvider;/*** Dynamicrictor Ein dynamisches Kompilierungsmodul ist für die Kompilierungs-Quelldateien verantwortlich. */public class dynamicreactor {javacompiler Compiler; MusterpaketPattern; @param srcPath Quelldatei Pfad * @Return -Klasse * <br> Wenn erfolgreich die Klasse der entsprechenden Klasse zurückgibt * <br> Wenn der Fehler null zurückgibt * */public class <?> DynamicCompile (String srcPath) {Klasse <? {System.out.println ("DynamicRector: Packagename -Fehler!"); Return null;} // Aufruf Compiler, um die angegebene Quelldatei int res = Compiler.run (null, null, null, null, null, srcPath); if (res! = 0) {system.out.println ("DynamicicPile: Compile JAVA JAVA JAHRE!", Zu kompilieren. Erstellen Sie ihn, wenn der Pfad nicht vorhanden ist, und überschreiben Sie, ob die angegebene Klassendatei String Packagedst = Changepackettodic (Packname); Datei dstdir = neue Datei (verpackt); if (! Dstdir.Exists ()) {dstdir.mkdir (). + ".class"); pathto = paths.get (packagedst, pathfrom.getFileName (). toString ()); try {files.move (pathfrom, pathto, StandardCopyOption.Replace_Existing); {result = class.forname (packname+". Changepackettodic (String Packagename) {String [] Dirs = Packagename.split ("//."); String res = "./bin";For (int i = 0; i <dires.length; i ++) {res+=" // "+Dirs [i];} return res;} //S -Starkpatps. {String result = null; bufferedReader BR; try {br = new bufferedReader (neuer FileReader (srcPath)); String Data = Br.Readline (); while (data! = Null) {if (data.indexof ("package")! m.group ();} break;} data = br.readline ();} br.close ();} catch (ioException e) {System.out.println ("DynamicRector: Fehler in der geöffneten Datei"+srcPath);} Rückgabeergebnis;}}Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über die dynamische Zusammenstellung und das Laden der Java -Programmierung. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf andere verwandte Themen auf dieser Website verweisen. Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!