ClassLoader



  • Hallo

    Ich wollte mal als Beispiel für meine Schüler einen kleinen Javaeditor programmieren. Die Benutzung des Compilers war kein problem, jedoch deren des
    interpreters bereitet mir kopfzerbrechen. habe in der zwischenzeit herausgefunden, dass der ClassLoader dafür benutzt werden muss.
    Habe jedoch im Internet keine Lösung gefunden.
    Ich hab vieles versucht, unter anderem folgendes:

    ClassLoader loader = ClassLoader.getSystemClassLoader();
    loader.loadClass("C:\\Test.class");

    gruss
    Adrian



  • Der ClassLoader wird nur genutzt wenn man etwas mit Reflection machen möchte. Für einen JavaEditor sehe ich grad nicht die Verwendung. Vielleicht könntest Du etwas präziser beschreiben, was Du genau machen möchtest?


  • Mod

    Willst du das Javaprogramm aus dem Editor heraus starten?

    Dann mach einfach einen neuen Thread, in dessen run-Methode du die main-Methode der Hauptklasse des Javaprogramms aufrufst.

    EDIT : Oder nutze die Methode "exec". ...ist glaube ich in der Klasse Runtime oder so!

    [ Dieser Beitrag wurde am 21.01.2003 um 23:05 Uhr von Gregor editiert. ]



  • @Gregor: Hast du überhaupt Ahnung von dem was du da redest?


  • Mod

    Original erstellt von <Shame on you>:
    @Gregor: Hast du überhaupt Ahnung von dem was du da redest?

    Nein, Sorry! 🕶

    EDIT : ..war das ne allgemeine Frage?! 🙂

    [ Dieser Beitrag wurde am 22.01.2003 um 00:04 Uhr von Gregor editiert. ]



  • @<Shame on you>
    ich weiss ja nicht, ob und was du zu bemängeln hast,
    aber das was Gregor da vorschlägt ist doch soweit in Ordnung.
    Oder hab ich da was übersehen?



  • 😃 😃 😃

    Das war ein Trollbeitrag meinerseits und war deshalb auch nicht ernst zu nehmen!



  • Ach so? Na dann kann man ihn also kommentarlos löschen?



  • Na ja, wenn du ihn kommentarlos löschen würdest, dann wüßte keiner mehr was mit diesem schönen Beitrag passiert ist. Ich würde ihn einfach kommentarlos ignorieren. 🙂



  • Wir könnten ihn doch um die Trollbeiträge stutzen? Aber da das Mehraufwand für mich ist einigen wir uns doch bitte darauf die Trollbeiträge in das dafür vorgesehene Forum zu schreiben, okay? Danke!



  • Alles klar. Für meinen Lieblingsmoderator tu ich doch alles. 🙂
    Trollbeiträge kommen ab demnächst nur noch ins passende Forum. Wenn du aber jetzt meine Beiträge rauslöscht, dann weiß man garnicht mehr was Gregor und Ingo meinten. Die ganze Story wäre futsch. 🙄

    🙂 🙂 🙂



  • würde dir auch sowas wie

    Class cklazz = getClass();

    helfen?!


  • Mod

    Original erstellt von Gregor:
    **
    Dann mach einfach einen neuen Thread, in dessen run-Methode du die main-Methode der Hauptklasse des Javaprogramms aufrufst.
    **

    Ich wollte doch nochmal anmerken, dass diese Lösung nicht ideal ist, da hier letztendlich alles in einem Programm abläuft. Wenn man hier etwas in einem der beiden Programme macht, dann hat das wohl auch Auswirkungen auf das andere Programm. ...wenn man zum Beispiel in einem der beiden Programme einen StackOverflow oder so verursacht, dann werden wohl beide Programme beendet. Zudem wird es für die GUI nur eine "EventQueue" geben etc.!

    Die zweite Lösung (mit dem exec) ist wohl besser.

    PS: Ohne den Trollbeitrag hätte ich das jetzt nicht mehr bemerkt! 🙂

    [ Dieser Beitrag wurde am 22.01.2003 um 19:43 Uhr von Gregor editiert. ]



  • Nein, ich glaube mein Problem wurde falsch verstanden.
    mit exec kann man nur exe files oder exec. - jar files starten.
    da ich jedoch schon einen editor gestartet haben (welcher die
    VM geladen hat), und in diesem editor einen eigenen editor gestartet habe,
    von welchem aus ich entwicklen möchte, muss ich mit dem ClassLoader arbeiten.
    daher gibt es den ClassLoader auch. Nun ist aber die Frage, wie ich mit diesem Arbeiten muss.

    ClassLoader loader = ClassLoader.getSystemClassLoader();

    erzeugt mir ein ClassLoader Objekt.
    mit

    loader.loadClass("C:\\Test.class");

    kann ich das ganze laden. jedoch fehlt mir scheinbar noch etwas, weis aber nicht
    genau was. ???????


  • Mod

    Also ich habe das bisher so verstanden, dass du dir einen eigenen Editor programmiert hast, aus dem heraus du die Javaprogramme starten können möchtest, die du mit dem Editor editierst. ...du hast da also einen "Run"-Button oder so.

    Wenn ich das falsch verstanden habe, dann erklär mir bitte nochmal genauer, was du machen möchtest.



  • Genau, Du hast das richtig verstanden.
    Ich habe ein Button zum kompilieren, und eines zum starten.
    das kompilieren mache ich über das javac.exe file.
    aber das interpretieren geht nicht über das java.exe file, da, so vermute ich,
    die VM schon gestartet ist. somit denke ich, dass ich mit dem ClassLoader arbeiten muss. bin mir aber nicht sicher.

    herzlichen dank
    adrian


Anmelden zum Antworten