Вопрос еще специально не задавался, но я подумал, что предложу это всем, кто наткнется на эту тему в будущем: это изменится, когда выйдет Java 8, и мы переместимся из Rhino в Nashorn в качестве основногоДвижок JavaScript.В Nashorn имя файла применяется к ScriptContext, а не к самому ScriptEngine:
ScriptContext context = new SimpleScriptContext();
context.setAttribute(ScriptEngine.FILENAME, "test.js", ScriptContext.ENGINE_SCOPE);
try
{
engine.eval(script, context);
}
catch (ScriptException e)
{
/* e.getFileName() will return "test.js" */
}
Если вы попытаетесь применить имя файла с помощью ScriptEngine.put (), как это делается в Rhino, ничегопроизойдет, и ваши исключения вернут "" в качестве имени файла.
Я бы предположил, что несколько человек столкнутся с этой проблемой в ближайшие месяцы, поэтому подумал, что предложу его.Это, кажется, нигде не задокументировано.Мне пришлось копаться в исходном коде Nashorn, чтобы понять это.