[英]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)
您有一個null異常,它發生在RJava
,您是否嘗試過使用調試器找出它確切崩潰的位置?
您的代碼不會在javaVector
和new Rengine
崩潰,因為Java運行時保證它將拋出異常,但不會是null異常。 您的代碼也不會在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中,您會得到一個錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.