Ergebnis 1 bis 6 von 6

Thema: eval () in Java?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    eval () in Java?

    Hi zusammen?

    Habe eine kleine Frage (oder eigentlich zwei), die mich einfach mal allgemein interessieren würde, und da's ja leider keinen Prog-OT-Thread gibt, mach ich halt einen neuen Thread deswegen auf. <_<'

    Die Frage:
    Gibt es in Java eine Möglichkeit, ähnlich wie in PHP durch eval () Strings als Code interpretieren zu lassen? Eigentlich würde ich ja schätzen, nein, da ja Java im Gegensatz zu PHP kompiliert werden muss, aber da's ja zusätzlich noch interpretiert wird, mehr oder weniger, wär's ja zumindest möglich. Also, Experten: geht's?

    Sonst gäb's ja wahrscheinlich immer noch die Möglichkeit, im Code eine "Temp.java"-Datei zu erstellen, Temp-Klasse samt main()-Methode hineinzuschreiben und den String dort einzufügen, dann zu kompilieren und auszuführen, oder? Allerdings weiß ich auch nicht, wie man mit Java Programme (wie eben javac) aufrufen kann, also bräuchte ich auch da Hilfe.
    Bzw. bräuchte ich keine, weil ich eigentlich nichts dementsprechendes plane, aber es würde mich halt mal interessieren. ^^''

  2. #2
    Ich denke, was du suchst ist BeanShell. Das ist eine Skriptsprache, die Java so ähnlich ist, daß man Java-Code fast unverändert ausführen kann.

    BTW, BeanShell wird in Zukunft ein Teil von Java werden.

  3. #3
    Theoretisch könnte man da auch was über nen Classloader machen. Damit lässt sich praktisch alles ausführen, wenn man es richtig (Sprich: in den passenden Bytecode) umwandelt.

    Geändert von DFYX (04.11.2006 um 20:01 Uhr) Grund: Erklärung hinzugefügt

  4. #4
    Hat nur den Nachteil, daß man vorher den Quell- in Bytecode umwandeln muß, wofür Java keine eingebauten Mechanismen hat - und wenn man versucht, javac zu verwenden hat man plötzlich distributionsspezifische Pfadangaben etc. und setzt auch noch das Vorhandensein eines JDK voraus.

  5. #5
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    Hat nur den Nachteil, daß man vorher den Quell- in Bytecode umwandeln muß, wofür Java keine eingebauten Mechanismen hat - und wenn man versucht, javac zu verwenden hat man plötzlich distributionsspezifische Pfadangaben etc. und setzt auch noch das Vorhandensein eines JDK voraus.
    JDK habe ich ja, und ich wollte das auch mehr als Spielerei verwenden, wenn überhaupt, und nicht veröffentlichen. Sowas merkwürdiges, un-Java-mäßiges in einem richtigen Programm zu verwenden wäre wohl Blödsinn.
    Aber wie kann man jetzt javac aus einem Java-Programm heraus aufrufen? *auf zweite Frage deut*

    Aber BeanShell klingt schon mal ziemlich gut, werde ich mir mal näher ansehen. Danke! ^^

    Edit: Muchas Gracias!

    Geändert von drunken monkey (05.11.2006 um 11:14 Uhr)

  6. #6
    Code:
    try
    {
      Process child = Runtime.getRuntime().exec("ls -la .");
    }
    catch (IOException e)
    {
      System.err.println(e.toString()); // bla
    }
    Für Zugriff auf Rückabewerte etc. sieh' dir die API-Doku zum Thema Process an.
    Falls du mehr Kontrolle über den Prozeß brauchst sieh' dir mal die ProcessBuilder-Klasse an.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •