簡體   English   中英

在Java和RJava中使用RQuantLib

[英]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 ,您是否嘗試過使用調試器找出它確切崩潰的位置?

您的代碼不會在javaVectornew 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM