.class-Datei in Javaprogrammierung einfügen

Hehe ... nein ... der Fehler wird ganz wo anderst liegen.
Erstens : gewöhne dir gleich an IMMER Slaches *also /* zu schreiben ... diese werden von Java immer richtig erkannt und lösen auch solche Escape-Probleme.
Zweitens : dein Pfad ist falsch. Du brauchst den Pfad "file:/C:/Users/HADDE/workspace/uTest/src/" und als Klassenname "interfaces.TestTest". Das setzt natürlich vorraus das du in der Klasse auch als Paketname "interfaces" festgelegt hast. Ansonsten wird das natürlich so auch nichts. Die Exception hat es dir eigentlich schon gesagt : ClassDefNotFound ... beduetet nicht mehr und nich weniger als das es in allen momentan geladenen Klassen eben keine gibt deren Signatur auf das passt was du laden willst. Klassen von Paketen läd man sowieso nicht mit einem Slash sondern mit einem Punkt. Genaueres dazu findest du in der JavaInsel *Google* unter dem Thema "Klassen und Pakete".
 
ach ja, noch etwas:
Deine .class-Datei wird wahrscheinlich nicht im Ordner */src/*, sondern unter */bin/* liegen, da du offensichtlich mit Eclipse arbeitest.
 
Hi!

Danke für eure Antworten! SPiKEe hat den letzten nötigen Tipp gegeben, Danke!
Mir war ja klar, dass die Klasse nicht gefunden wird, aber wusste halt nicht warum ;-)

Des mit der Classdatei in "bin" ist klar, war nur für ein ersten Test so... jetzt kanns weiter gehen ;-)


Also nochmal danke! Viele Grüße, Kai
 
Es so wie ich es oben bereits erwähnt habe, in loadClass gibst du keinen Dateinamen an, sondern einen Klassennamen, wie du ihn auch bei import angeben würdest. Also ist H:/Programme/Java/src/plugin/Test.class ungültig. Gültig sind Klassennamne in der Form java.lang.String, oder (wenn ich das richtig raus gefiltert habe) in deinem Fall interfaces.TestTest, da die Klasse TestTest ja im package interfaces ist. Damit der URL-ClassLoader die findet musst du ihm den richtigen Such-Pfad mitgeben.
Um abzuschließen, so müsste dein Code funktionieren:

Java:
    private Class createClass() throws Exception
    {
        Class result;
        
        URI uri = new File("C:/Users/HADDE/workspace/uTest/bin/interfaces/").toURI();
        URL url = uri.toURL();
        URLClassLoader urlClassLoader = new URLClassLoader( new URL[]{ url } );
        result = urlClassLoader.loadClass("interfaces.TestTest");
 
        return result;
    }
 

Neue Beiträge

Zurück