在 Java 中使用 RQuantLib 与 RJava
Using RQuantLib in Java with RJava
我对使用 RJava 比较陌生,并且在我尝试的一段代码中遇到空指针异常。我怀疑这可能是由于我使用的数据类型造成的,但我对如何解决这个问题有点困惑。对此的任何帮助都将是惊人的。
import org.rosuda.JRI.Rengine;
public class RJava {
public static void main(String a[]) {
String javaVector = "c(put, 0.0425, 66.592, 66.00, 0, 0.068, 0.072, 0.1)";
Rengine engine = new Rengine(new String[] { "--no-save" }, false, null);
engine.eval("library(RQuantLib)");
engine.eval("rVector=" + javaVector);
engine.eval("Euvol=EuropeanOptionImpliedVolatility(rVector)");
double vol = engine.eval("Euvol").asDouble();
System.out.println("Vol=" + vol);
}
}
Exception in thread "main" java.lang.NullPointerException
at co.karan.RJava.main(RJava.java:49)
您有一个空异常,它发生在 RJava
,您是否尝试使用调试器找出它崩溃的确切位置?
您的代码不会在 javaVector
和 new Rengine
中崩溃,因为 Java 运行时保证它会抛出异常,但不会是空异常。您的代码也不会在 eval
调用中崩溃。那还有什么?
您的代码在 engine.eval("Euvol")
中崩溃。函数 eval
给你一个 null 并且你试图转换为 double,你不能这样做。
现在,您应该想想为什么您的 R 引擎给您一个空异常。有几种可能性:
1: 您没有安装 QuantLib。如果您的 QuantLib 没有正确安装,RQuantLib 将无法工作。更糟糕的是,您甚至可能没有安装 RQuantLib。
2:您对 RQuanlib 的输入不正确。阅读文档:
第一个参数是 STRING。在您提供的代码中 put
,这是一个 变量 而不是字符串。
R 向量 c(put, 0.0425, 66.592, 66.00, 0, 0.068, 0.072, 0.1)
无效。尝试将它复制到你的 R 中,你会得到一个错误。
我对使用 RJava 比较陌生,并且在我尝试的一段代码中遇到空指针异常。我怀疑这可能是由于我使用的数据类型造成的,但我对如何解决这个问题有点困惑。对此的任何帮助都将是惊人的。
import org.rosuda.JRI.Rengine;
public class RJava {
public static void main(String a[]) {
String javaVector = "c(put, 0.0425, 66.592, 66.00, 0, 0.068, 0.072, 0.1)";
Rengine engine = new Rengine(new String[] { "--no-save" }, false, null);
engine.eval("library(RQuantLib)");
engine.eval("rVector=" + javaVector);
engine.eval("Euvol=EuropeanOptionImpliedVolatility(rVector)");
double vol = engine.eval("Euvol").asDouble();
System.out.println("Vol=" + vol);
}
}
Exception in thread "main" java.lang.NullPointerException
at co.karan.RJava.main(RJava.java:49)
您有一个空异常,它发生在 RJava
,您是否尝试使用调试器找出它崩溃的确切位置?
您的代码不会在 javaVector
和 new Rengine
中崩溃,因为 Java 运行时保证它会抛出异常,但不会是空异常。您的代码也不会在 eval
调用中崩溃。那还有什么?
您的代码在 engine.eval("Euvol")
中崩溃。函数 eval
给你一个 null 并且你试图转换为 double,你不能这样做。
现在,您应该想想为什么您的 R 引擎给您一个空异常。有几种可能性:
1: 您没有安装 QuantLib。如果您的 QuantLib 没有正确安装,RQuantLib 将无法工作。更糟糕的是,您甚至可能没有安装 RQuantLib。
2:您对 RQuanlib 的输入不正确。阅读文档:
第一个参数是 STRING。在您提供的代码中 put
,这是一个 变量 而不是字符串。
R 向量 c(put, 0.0425, 66.592, 66.00, 0, 0.068, 0.072, 0.1)
无效。尝试将它复制到你的 R 中,你会得到一个错误。