JRuby: использование StringScanner: NoMethodError: неопределенный метод `bol?' для ноля:NilClass
Я пытаюсь использовать JRuby 1.7.4 в веб-приложении Java. Вот код, который я пытаюсь запустить:
require 'strscan'
scanner = StringScanner.new("test\ntest\n")
scanner.bol?
это выполняется с использованием следующего кода Java:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("jruby");
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.rb");
InputStreamReader inputStreamReader = new InputStreamReader(resourceAsStream, Charset.forName("UTF-8"));
engine.eval(inputStreamReader);
К сожалению, это заканчивается этим исключением:
NoMethodError: undefined method `bol?' for nil:NilClass
(root) at <script>:3
javax.script.ScriptException: org.jruby.embed.EvalFailedException: (NoMethodError) undefined method `bol?' for nil:NilClass
at org.jruby.embed.jsr223.JRubyEngine.wrapException(JRubyEngine.java:104)
at org.jruby.embed.jsr223.JRubyEngine.eval(JRubyEngine.java:121)
at org.jruby.embed.jsr223.JRubyEngine.eval(JRubyEngine.java:146)
Есть идеи, что может быть не так?
1 ответ
Решение
Решение было довольно сложно найти, похоже, оно связано с Intellij Idea, которая добавляет следующий путь в classpath, что делает тест неудачным:
C:\Users\theaterofthought\.IntelliJIdea12\config\plugins\ruby\rubystubs\rubystubs18
Очистка и повторное создание проекта IDEA помогли получить новый модуль запуска для моего теста, работающий без этого пути в аргументе -classpath.