Toon posts:

[Java] String uitvoeren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Stel ik heb een String, bijv. "if(a && !b) { performAction(); }" en ik wil deze String graag laten uitvoeren. Kan dat in Java?

Het lijkt misschien een beetje een vreemde vraag, maar ik wil een Rule-object maken met een gewicht (int) en een rule (String). Omdat er enorm veel rules gaan komen (waarop ik een online-learning techniek ga toepassen) is het handig als ik zo'n object zou kunnen maken... :)

  • Rickets
  • Registratie: Augustus 2001
  • Niet online

Rickets

Finger and a shift

Zoiets wordt in andere talen eval genoemd. Misschien staat hier wat tussen voor je :)
http://onesearch.sun.com/...&col=devforums&col=devall

[ Voor 33% gewijzigd door Rickets op 16-01-2004 15:43 ]

If some cunt can fuck something up, that cunt will pick the worst possible time to fucking fuck it up, because that cunt’s a cunt.


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Verwijderd schreef op 16 januari 2004 @ 15:38:
Stel ik heb een String, bijv. "if(a && !b) { performAction(); }" en ik wil deze String graag laten uitvoeren. Kan dat in Java?

Het lijkt misschien een beetje een vreemde vraag, maar ik wil een Rule-object maken met een gewicht (int) en een rule (String). Omdat er enorm veel rules gaan komen (waarop ik een online-learning techniek ga toepassen) is het handig als ik zo'n object zou kunnen maken... :)
In de standaard installatie is hiervoor geen functionaliteit aanwezig. Hiervoor zul je je toch echt moeten vergrijpen aan bv een script omgeving (bv jython) of zelf een parser/interpreter in elkaar moeten plakken. Er zijn voor java veel mooie parser generatoren uit zoals bv Sablecc.

Pas verder wel op met wat voor commando`s je allemaal wilt kunnen uitvoeren. Voor het zelfde geld is iemand zo slim om commando`s door te sturen die schade aanrichten zoals het os om zeep helpen of belangrijke files weggooien.

[ Voor 15% gewijzigd door Alarmnummer op 16-01-2004 15:48 ]


  • Tuinhark
  • Registratie: April 2000
  • Laatst online: 26-05 20:37

Tuinhark

Retro

En anders kom je vanzelf bij reflection uit (java.lang.reflect.*)

:Y)

Verwijderd

Ik heb iets dergelijks geprobeerd met beanshell:

http://www.beanshell.org/manual/quickstart.html#Quick_Start

Men code ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import bsh.EvalError;
import bsh.Interpreter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TestBSH {
    public static void main(String[] args) {
        
        try {
            Interpreter interpreter = new Interpreter();
            interpreter.set("aap", 5);
            interpreter.eval("bar = aap*10");             
            System.out.println( interpreter.get("bar") );
        }
        catch(EvalError ee) {        
            System.err.println("Input error: " + ee.getMessage());      
        }
    }
}


Compilen doet het wel maar hij gooit steeds de exception:

java.lang.NoClassDefFoundError: bsh/EvalError
Exception in thread "main" >Exit code: 1

Ik zou niet weten wat ik verkeerd doe. Weet iemand een oplossing??

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
bsh package staat niet in het classpath

Verwijderd

Men path staat goed ingesteld. Ik heb ook al geprobeerd de jarfile in de /ext map te plaatsen zoals aangegeven in de quickstart op beanshell, maar hij blijft stees dezelfde exception geven.

Verwijderd

Alle benodigden classes zijn aanwezig in de jar file. De jar file staat op de juiste plaats. Bij mij C:\j2sdk1.4.2_03\jre\lib\ext.
Bij mijn omgevingsvariabelen in xp heb ik het path juist ingesteld zoals in de manual, nl: C:\j2sdk1.4.2_03\jre\lib\ext\bsh-xx.jar

Maar de boel compiled gewoon dus hij vindt de classes ook normaal.

Iemand een idee waaraan dan die excetion kan liggen?

java.lang.NoClassDefFoundError: bsh/EvalError
Exception in thread "main" >Exit code: 1

Heb trouwens ook al geprobeerd de jar file in dezelfde directory als men java bestandje te zetten maar dan compiled hij zelfs niet.

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Misschien dat dit helpt met je extensie.

[ Voor 26% gewijzigd door NetForce1 op 20-01-2004 11:39 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"

Pagina: 1