JavaScript put klappt nicht

  • Themenstarter Themenstarter Turakar
  • Beginndatum Beginndatum
T

Turakar

Gast
Hallo,
ich benutze folgenden Code um einen JavaScript script zu starten und ihm Daten zu übergeben:

Java:
     public void run()
	{
		running = true;
		
		se.put("datas", dc);

		try 
		{
			se.eval(script);
		} 
		catch (ScriptException e) 
		{
			er.handleException(e);
		}
		
		running = false;
	}

Dies läuft in einem Thread der gestartet wird und nachher nicht mehr gestoppt.
dc ist übrigens eine von mir geschriebene Klasse, die 100% funktioniert.
Mein Javascript Code um zu überprüfen ob datas vorhanden ist, ist sehr simpel:
Code:
var i = datas;
Liegt dass Problem darin, das ich einen Thread benutze?
Oder bin ich einfach nur dumm?
???:L???:L???:L
 
da ich selbst in dem sinne kein JavaScript spreche kann ich wenig zu sagen ... würde aber schlicht vermuten das entweder die ScriptEngine einfach nicht in der lage ist das zu machen was du willst (denn die beigelegte JS-Engine ist selbst in Java7 noch ziemlich schlecht und kann lange nicht alles) oder es liegt einfach daran das du versuchst ein komplexes java-objekt in eine einfach variable zu übergeben ...
ich weis erlich gesagt NICHT was bei einer solchen aktion passiert und wie man dann auf irgendwas zugreifen kann ... würde aber wie gesagt behaupten dass das was du vorhast so einfach nicht funktioniert ...

btw : warum versuchst du überhaupt JavaScript innerhalb von Java auszuführen ? ist es denn unmöglich das script in funktionierenden java-code zu portieren ?
 
trööhöööt, also diese Antwort war ja mal unglaublich nutzlos (und falsch) 😀

@TO:
Also am Thread liegts definitiv nicht, du kannst die ScriptEngine problemlos in einem Thread ausführen. Woran merkst du genau, dass das nicht funktioniert? Wirft "var i = datas;" eine Exception? Hast du probiert, auf eine Methode vom datas Objekt zuzugreifen?

Die Verwendung der ScriptEngine ist eigentlich recht trivial, so viel falsch machen kann man da eigentlich nicht.
 
Bin momentan am iPod, kann also nichts kopieren. Was ich noch in Erinnerung habe ist das datas eine unknownSource ist, dies war zumindestens dem Fehler zu entnehmen. Eine weitere Frage, kann man einen Script als String der ScriptEngine übergeben, also
Code:
ScriptEngine.eval("var i = 0;");
?
Werde später genaueres sagen können.
 
Ich erhalte folgenden Fehler beim Aufrufen der run():

putting "datas" into se

checking "datas" in se
"datas" equals "dc" = true

starting se
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: syntax error (<Unknown source>#1) in <Unknown source> at line number 1
at com.sun.script.javascript.RhinoScriptEngine.eval(Unknown Source)
at com.sun.script.javascript.RhinoScriptEngine.eval(Unknown Source)
at javax.script.AbstractScriptEngine.eval(Unknown Source)
at main.Script.run(Script.java:47)
Caused by: sun.org.mozilla.javascript.internal.EvaluatorException: syntax error (<Unknown source>#1)
at sun.org.mozilla.javascript.internal.DefaultErrorReporter.runtimeError(Unknown Source)
at sun.org.mozilla.javascript.internal.DefaultErrorReporter.error(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.addError(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.addError(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.reportError(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.reportError(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.reportError(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.primaryExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.memberExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.unaryExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.mulExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.addExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.shiftExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.relExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.eqExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.bitAndExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.bitXorExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.bitOrExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.andExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.orExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.condExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.assignExpr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.expr(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.statementHelper(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.statement(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.parse(Unknown Source)
at sun.org.mozilla.javascript.internal.Parser.parse(Unknown Source)
at sun.org.mozilla.javascript.internal.Context.compileImpl(Unknown Source)
at sun.org.mozilla.javascript.internal.Context.compileReader(Unknown Source)
at sun.org.mozilla.javascript.internal.Context.compileReader(Unknown Source)
at sun.org.mozilla.javascript.internal.Context.evaluateReader(Unknown Source)
... 4 more

Ja, ich habe zusätzliche Ausgaben implementiert.
 
Ich war dumm.

Zwar habe ich die DataCollection dc richtig "geputtet", hatte allerdings einen falschen Script. Mein DateienLeser fügt nämlich nach jeder Zeile ein ":-:" ein. Das war noch im Script drin. Mit einer simplen
Code:
script.replace(":-:", "");
Aufruf war die Sache geklärt.
Trotzdem Danke!

PS:
Dümmer geht`s net. :lol:
 

Zurück
Oben