2012-04-25 11 views
-1

私はJavaで動作する(JavaScript)スクリプトを手に入れようとしています。JavaスクリプトNoSuchMethodException?

私はそうのように(必要なすべてのスクリプトエンジンに関連する事柄のインスタンスと一緒に)私のJavaプログラムで定義されたJavaScriptでプログラムを、持っている:私はこれを呼び出して実行するプログラムの開始時に

static ScriptEngineManager engineManager = new ScriptEngineManager(); 
static ScriptEngine jsengine = engineManager.getEngineByName("js"); 
static Invocable jsinvoke = (Invocable) jsengine; 


static String program = 

    "//importPackage(javax.swing);" + 
    "function myMethod(x, y) {" + 
     "return x+y;" + 
    "}"; 

、これは文句なしで動作します。次に

try { 
     jsengine.eval(program); 
    } catch(ScriptException e) {e.printStackTrace();} 

、私はこれでmyMethodを呼び出す:

try { 
     jsinvoke.invokeFunction("myMethod", x, y); 
    } catch(ScriptException se) { 
     se.printStackTrace(); 
    } 
    catch(NoSuchMethodException nsme) { 
     nsme.printStackTrace(); 
    } 

エラーjava.lang.NoSuchMethodException: no such method: myMethodを返します。それは明らかにJavaScriptに存在するので、私は何を間違えたのですか?

答えて

3

コメントしたコードは、それがmyMethod

//importPackage(javax.swing); 

でも、メソッド名をコメントアウトので、あなたは、あなたのコメントを保持したい場合は、この行を削除し、コード

を再実行し、問題の原因のようです単一行コメントの代わりに(/ /)複数行コメント(/ ** /)を使用

+2

改行がありません。ナイスキャッチ。 –

+0

えええええええええええええええええええええええええええええー:) – mprabhat

+0

彼は彼のJavascriptの文字列の代わりに、Javaの全体の行をコメントアウトすることができます。同じ効果、バグを除いたもの。 –

関連する問題