2016-10-06 14 views
0

IDEでJavaとJavascriptの両方をデバッグできるようにするには、load(filename)Nashorn extensionを使用する必要があります。 Debugging Nashorn JavaScript with IntellijNashorn Javascript CompiledScriptによるデバッグ?

残念ながら、これは、上記のように戻り、ScriptObjectMirrorオブジェクトをCompiledScriptの使用を禁止し、少なくとも何compile(filename) Nashorn拡張子が文書化されていません。

ここで失われているCompiledScript機能の1つは、 CompiledScript.eval(ScriptContext context)。私はScriptObjectMirrorを使って同じことを達成する方法を見つけることができませんでした。また、load(filename)はすぐにスクリプトを実行しますが、これは望ましくない可能性があります。

+0

参照してくださいを参照してください。これにより、ファイル名がNetbeansデバッガのNashorn JSスタックフレームに表示されます。これは、 'load()'が使用されていない場合でも同様です。 'CompiledScript'を使用します。 – jfrantzius

答えて

1

あなたはこれを使用してのIDEで任意のNashorn/JavaScriptをデバッグすることができます - >

https://blogs.oracle.com/sundararajan/entry/remote_debugging_of_nashorn_scripts

  • はjdk.nashornにブレークポイントを挿入するために、あなたのIDEを使用し
  • スクリプトに "デバッガ" の文を紹介します。あなたのIDEでinternal.runtime.ScriptRuntime.DEBUGGER方法
  • 開始 "デバッグ"

IntelliJも参照してください。https://stackoverflow.com/a/38513981/3189360

最近のNetBeansビルドでは、2番目の部分は必要ありません。 NetBeansは自動的に「デバッガ」ステートメントに入ります。

は、JSのソースファイルに自動的に `// @ sourceURLに=`注釈を追加しますMavenのリソースフィルターにもhttps://github.com/aperto/sourceurl-resourcefilter https://twitter.com/sundararajan_a/status/773375676103602178

+0

Thxですが、ブレークポイントを設定することは私の問題ではありませんでした。私の場合はJava例外に入れてしまっています。 私が探しているのは、.jsソース行に対応するスタックフレームと、それらのスタックフレームを選択する際に表示される.jsソースです。さもなければ、私はどの変数を見ているのか分かりません:) – jfrantzius

+0

NetBeansは、そのブレークポイントがヒットしたときにソース( "String"から "eval"されている場合でも)を表示します。また、スタックトレースのスタックフレームには、ユーザーが関連付けた名前がないため、人為的な名前を使用する必要があります。それほど多くはできません。しかし、Nashornは@sourceURL/#sourceURLディレクティブを実装しています。 (https://bugs.openjdk.java.net/browse/JDK-8032068)。これは、評価されたソースに対して読める名前を関連付けるのに便利です。 –

+0

NetBeansは、[IDEAはMaven依存関係をデバッグするときにバグがあります](https://youtrack.jetbrains.com/issue/IDEA-162333)のように、私が試してみたい次のものです。 NetBeansが、 'load()'を使わずに、CompiledScriptの呼び出しでもソースを表示するかどうかを偶然に知っていますか? – jfrantzius

関連する問題