Ich versuche ein Klassenobjekt aus einer kompilierten Klassendatei zu laden, die sich in meinem Desktop-Verzeichnis befindet.Laden von externen Klassendateien ohne Berücksichtigung von Klassenpfaden oder Paketen
Ich füttere zwei Argumente zu main in meinem Programm, das URLClassLoader
verwendet, um eine Instanz einer Klasse aus einer kompilierten Datei TheClassToLoad.class
zu erhalten.
ich habe, in Haupt des Classloading Programms: (args[0] is for something unrelated)
String classFile_FilePath = args[1];
String className = args[2];
URL classUrl = new URL(classFile_FilePath);
URLClassLoader ucl = new URLClassLoader(new URL[]{classUrl});
Wenn dieses Programm von der Shell ausgeführt wird, während im Projektverzeichnis:
Me:ClassLoadingProgramRootDir Me$ java com.company.Main argZero file:///Users/Me/Desktop/ TheClassToLoad.class
I eine erhöhte Ausnahme finden:
Ausnahme im Thread "Haupt" java.la ng.ClassNotFoundException: TheClassToLoad.class
So gibt es eine Datei TheClassToLoad.class
in Desktop/
noch URLClassLoader
eine Ausnahme auslöst, ohne das Detail Bereitstellung Ich muss die Situation debuggen.
Ich bin neu in Java und bin mir bewusst, dass Klassenpfade wie com.company.Class
oft benötigt wird, um auf den tatsächlichen Klassennamen einer Klasse basierend auf der Paketverzeichnisstruktur zu verweisen. In diesem Fall werde ich jedoch einfach gebeten, dass URLClassLoader
mir eine Instanz des Klassenobjekts für eine beliebige kompilierte Klassendatei gibt, die irgendwo auf einer Maschine sitzt.
Wenn Ihre Klasse eine 'Paket'-Anweisung hat, müssen Sie sie beim Versuch, sie zu laden und zu verwenden, respektieren. – bmargulies