Как я могу указать свой собственный контекст Rhino в Java?

Я пытаюсь убедиться, что мои скрипты Rhino (работающие под Java 6) строги, чтобы, если разработчик скриптов неправильно написал выражение, я хотел, чтобы было выдано исключение. В настоящее время, что происходит, это выражение просто оценивается как "неопределенное".

Теперь, согласно Mozilla org https://developer.mozilla.org/en/New_in_Rhino_1.6R6 есть функции, позволяющие осуществлять строгую проверку в контексте. Я не могу найти работающий пример этого.

До сих пор я написал класс для расширения ContextFactory, а затем переопределил метод hasFeature.

public class ScriptContextFactory extends ContextFactory {

    protected boolean hasFeature(Context context, int featureIndex) {

        switch (featureIndex) {
            case Context.FEATURE_STRICT_EVAL:
                return true;

            case Context.FEATURE_STRICT_VARS:
                return true;
        }

        return super.hasFeature(context, featureIndex);
    }
  }

Затем в главном я установил мой по умолчанию.

ContextFactory.initGlobal(new ScriptContextFactory());

и я получаю незаконное государственное исключение.:(

Любые идеи или образцы о том, как это работает?

ТИА

1 ответ

Решение

Если вы делаете Context.enter() перед звонком initGlobal() попробуйте поменять порядок.

Другие вопросы по тегам