я пытаюсь выполнить эти простые короткие сценарии для тестирования Насхорн:ошибка двигателя nashorn?
basedir="/cassandara2/cassandra"
ba="/cassandara2/cassandra/lib/ST4-4.0.8.jar";
lib = "";
lib += ' <root url="jar://' + ba.replace(basedir, "$PROJECT_DIR");
print(lib);
это работает отлично, но когда я добавить знак $ после "$ project_dir" ==>"$ project_dir $", я получил эту ошибку:
> java.lang.StringIndexOutOfBoundsException: String index out of range:
> 13 at java.lang.String.charAt(String.java:646) at
> jdk.nashorn.internal.objects.NativeRegExp.appendReplacement(NativeRegExp.java:738)
> at
> jdk.nashorn.internal.objects.NativeRegExp.replace(NativeRegExp.java:674)
> at
>
> jdk.nashorn.internal.objects.NativeString.replace(NativeString.java:763)
> bla...
Является ли это ошибка в JDK 8 Nashorn (я использовал jdk8 U45) этот код:
public static void main(String[] args) {
try {
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("nashorn");
Object eval = engine.eval("load(\"" + "script/demo.js" + "\");");
System.out.println(eval);
} catch (Exception ex) {
ex.printStackTrace();
}
}
Это было исправлено 8u20. – wickund
Я понял! tks u очень много! Не думаю, что в jdk слишком много ошибок :(! Скучно! Принял ваш правильный ответ! –