自分のニーズに合わせて ScriptEngine をテストしようとしています。私のJavaプログラムには変数があります:
HashMap<String,HashMap<String,String[]>> mymap = new HashMap<String,HashMap<String,String[]>>();
この例では、次の内容が含まれ{Source, {service = ["TCP"]}}
ています。ここで、マップのコンテンツを読み取りながら式を評価するために、このマップを ScriptEngine に渡すことができるようにしたいと考えています。私は次のことをしようとしました:
HashMap<String,String[]> Source = new HashMap<String,String[]>();
Source.put("service", new String[]{"TCP"});
mymap.put("Source", Source);
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
Bindings bindings = new SimpleBindings();
bindings.put("map", mymap);
String exp = "println(\"Hello from inside scripting!\");"
+ "println(\"map = \" + map)";
engine.eval(exp,bindings);
それでもうまくいきません。私は得る:
Hello from inside scripting!
mymap = {Source={service=[Ljava.lang.String;@4e2e29c}}
両方を試しましたが、map.Source or map['Source']
どちらも機能しませんでした。どうすれば機能しますか?文字列がOKを通過して評価されるようにするには?さらに重要なことに、それは私の問題を解決するので、javascript ランタイムをデバッグできますか? そこで何が起こるかを見ることができました。