在 Nashorn 上尝试 运行 browser.js 时 <eval> 中的 char class 中的空范围

empty range in char class in <eval> when trying to run browser.js on Nashorn

我正在尝试 运行 browser.js 在 Nashorn 中,在库中使用 babel.transform 一些同构 Webapp。

public BabelTransformer() throws ScriptException, IOException{  
try
    {
        ScriptEngineManager mgr = new ScriptEngineManager();
        ScriptEngine nashorn = mgr.getEngineByName("nashorn");
        nashorn.eval(getScript("com/facebook/babel/node_modules/babel-core/browser.min.js")); //The line 38
        babel = (ScriptObjectMirror)nashorn.eval("babel");
        invocable = (Invocable) nashorn;
    }
    catch(ScriptException | IOException e)
    {
        throw new Error(e);  //The line 42
    }
}

抛出错误:

javax.script.ScriptException: SyntaxError: empty range in char class in <eval> at line number 41
java.lang.Error: javax.script.ScriptException: SyntaxError: empty range in char class in <eval> at line number 41
    at com.facebook.babel.BabelTransformer.<init>(BabelTransformer.java:42)
    at com.facebook.babel.BabelTransformerTest.setUp(BabelTransformerTest.java:16)
Caused by: javax.script.ScriptException: SyntaxError: empty range in char class in <eval> at line number 41
    at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:467)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:451)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:403)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:399)
    at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:155)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
    at com.facebook.babel.BabelTransformer.<init>(BabelTransformer.java:38)
Caused by: <eval>:41 SyntaxError: empty range in char class
    at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
    at jdk.nashorn.internal.runtime.ECMAErrors.asEcmaException(ECMAErrors.java:99)
    at jdk.nashorn.internal.runtime.ECMAErrors.asEcmaException(ECMAErrors.java:69)
    at jdk.nashorn.internal.runtime.ParserException.throwAsEcmaException(ParserException.java:107)
    at jdk.nashorn.internal.objects.NativeRegExp.<init>(NativeRegExp.java:87)
    at jdk.nashorn.internal.objects.NativeRegExp.<init>(NativeRegExp.java:95)
    at jdk.nashorn.internal.objects.NativeRegExp.<init>(NativeRegExp.java:99)
    at jdk.nashorn.internal.objects.NativeRegExp.newRegExp(NativeRegExp.java:212)
    at jdk.nashorn.internal.objects.NativeRegExp.constructor(NativeRegExp.java:168)
    at jdk.nashorn.internal.scripts.Script$Recompilation111181AAA$\^eval\_.L:1-1$L:41-4(<eval>:41)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:646)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.internal.objects.NativeFunction.call(NativeFunction.java:192)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation016111AAA$\^eval\_.L:1-1$L:38-4(<eval>:38)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:646)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.internal.objects.NativeFunction.call(NativeFunction.java:192)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation989230AAA$\^eval\_.L:1-1$L:38(<eval>:38)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:666)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.internal.objects.NativeFunction.call(NativeFunction.java:192)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation82846AAA$\^eval\_.L:1-1$L:6-3(<eval>:6)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:646)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.internal.objects.NativeFunction.call(NativeFunction.java:192)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation64391AAA$\^eval\_.L:1-1$L:15-5(<eval>:15)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:646)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.internal.objects.NativeFunction.call(NativeFunction.java:192)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation7195AAAAAAA$\^eval\_.L:1-1$L:14-3(<eval>:14)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation6298AAAAAAA$\^eval\_.L:1-1$L:13-17(<eval>:13)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation9242AAAAAAA$\^eval\_.L:1-1$L:13-19(<eval>:13)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation7993AAAAAAA$\^eval\_.L:1-1$L:9-7(<eval>:9)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation9372AAAAAAA$\^eval\_.L:1-1$L:9-8(<eval>:9)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation2286AAAAAAA$\^eval\_.L:1-1$L:9-9(<eval>:9)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation0937AAAAAAA$\^eval\_.:scopeCall(<eval>)
    at jdk.nashorn.internal.scripts.Script$Recompilation0937AAAAAAA$\^eval\_.L:1-1$L:7-3(<eval>:7)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation3814AAAAAAA$\^eval\_.L:1-1$L:9-6(<eval>:9)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation3503AAAAAAA$\^eval\_.L:1-1$L:8-2(<eval>:8)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation534AAAAAAA$\^eval\_.:scopeCall(<eval>)
    at jdk.nashorn.internal.scripts.Script$Recompilation534AAAAAAA$\^eval\_.L:1-1$L:3-12(<eval>:3)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation1A$\^eval\_.L:1-1$e$s$L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation457A$\^eval\_.L:1-1$L:3-11$L:3(<eval>:3)
    at jdk.nashorn.internal.scripts.Script$Recompilation439AAAAAAA$\^eval\_.L:1-1$L:3-11(<eval>:3)
    at jdk.nashorn.internal.scripts.Script$Recompilation6AA$\^eval\_.L:1-1$e$s(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation0AAA$\^eval\_.L:1-1$e(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$Recompilation9$\^eval\_.L:1-1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$RecompilationA$\^eval\_.L:1(<eval>:1)
    at jdk.nashorn.internal.scripts.Script$\^eval\_.:program(<eval>:1)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:640)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
    at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:446)
Caused by: jdk.nashorn.internal.runtime.ParserException: empty range in char class
    at jdk.nashorn.internal.runtime.regexp.RegExp.throwParserException(RegExp.java:161)
    at jdk.nashorn.internal.runtime.regexp.JoniRegExp.<init>(JoniRegExp.java:84)
    at jdk.nashorn.internal.runtime.regexp.JoniRegExp$Factory.compile(JoniRegExp.java:104)
    at jdk.nashorn.internal.runtime.regexp.RegExpFactory.create(RegExpFactory.java:92)
    at jdk.nashorn.internal.objects.NativeRegExp.<init>(NativeRegExp.java:84)

怎么了?有谁能帮忙吗

这可能是 Nashorn 版本:https://github.com/babel/babel/issues/340

您需要确保文件加载了正确的字符集,UTF-8,以便它可以被正确解释。