Я пытаюсь вызвать функцию ruby в java. но при запуске программы я получил NullPointerException
.
Вот мой код Javajava.lang.NullPointerException при использовании Java с Ruby
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.io.InputStream;
public class MyProgram
{
public static void main(String[] args) throws IOException, NoSuchMethodException
{
try
{
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine rbEngine = mgr.getEngineByExtension("rb");
InputStream is = ClassLoader.getSystemResourceAsStream("src/myruby.rb");
Reader reader = new InputStreamReader(is);
rbEngine.eval(reader);
Invocable invocableEngine = (Invocable)rbEngine;
if (invocableEngine != null)
{
int set = (Integer) invocableEngine.invokeFunction("myfunc",6,6);
}
}
catch (ScriptException e)
{
System.out.println("\nScriptException = "+e);
}
}
}
И файл myruby.rb содержит
def myfunc(a,b)
f=a+b
return f
end
ошибка я получаю,
Exception in thread "main" java.lang.NullPointerException
at java.io.Reader.<init>(Unknown Source)
at java.io.InputStreamReader.<init>(Unknown Source)
at MyProgram.main(MyProgram.java:22)
Пожалуйста, помогите мне найти проблему.
Спасибо заранее.
в catch, пожалуйста, используйте 'e.printStackTrace()' и после этого обменивайтесь исключением. Я полагаю, ваш объект 'ScriptEngineManager mgr' имеет значение null, и он выбрасывает исключение в' mgr.getEngineByExtension («rb»); ' – Freak