使用rJava创建新的java.sql.Date

时间:2015-06-23 10:59:01

标签: r

我已尝试过以下操作:.jnew("java/sql/Date", 1912324L))(使用rJava包)并获得以下内容:

  

.jnew错误(" java / sql / Date",1912324L):     java.lang.NoSuchMethodError:

尝试.jnew("java/util/Date", 1912324L)时出现同样的错误。

关于为什么会发生这种情况的任何想法?

注意:这工作正常.jnew("java/lang/String", "s")

强制性session_info():

Session info --------------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.2.1 (2015-06-18)
 system   x86_64, darwin14.4.0        
 ui       RStudio (0.99.441)          
 language (EN)                        
 collate  en_AU.UTF-8                 
 tz       Australia/Sydney            

Packages ------------------------------------------------------------------------------------------
 package   * version date       source        
 crayon      1.3.0   2015-06-05 CRAN (R 3.2.1)
 curl        0.9     2015-06-19 CRAN (R 3.2.1)
 devtools  * 1.8.0   2015-05-09 CRAN (R 3.2.1)
 digest      0.6.8   2014-12-31 CRAN (R 3.2.1)
 git2r       0.10.1  2015-05-07 CRAN (R 3.2.1)
 memoise     0.2.1   2014-04-22 CRAN (R 3.2.1)
 Rcpp        0.11.6  2015-05-01 CRAN (R 3.2.1)
 rJava     * 0.9-6   2013-12-24 CRAN (R 3.2.1)
 rversions   1.0.1   2015-06-06 CRAN (R 3.2.1)
 testthat  * 0.10.0  2015-05-22 CRAN (R 3.2.1)
 xml2        0.1.1   2015-06-02 CRAN (R 3.2.1)

并且......运行Java 1.6:

java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)

1 个答案:

答案 0 :(得分:5)

java.sql.Date的构造函数以long为参数,而您传递的是int。由于R不具有原生floatlong类型,rJava提供.jfloat.jlong函数来转换数字R向量。这有效:

.jnew("java/sql/Date", .jlong(1912324))

请记住,您必须提供1970-01-01之间的毫秒数,因此您提供的价值极不可能符合您的预期。