我已尝试过以下操作:.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)
答案 0 :(得分:5)
java.sql.Date
的构造函数以long
为参数,而您传递的是int
。由于R不具有原生float
和long
类型,rJava
提供.jfloat
和.jlong
函数来转换数字R向量。这有效:
.jnew("java/sql/Date", .jlong(1912324))
请记住,您必须提供1970-01-01之间的毫秒数,因此您提供的价值极不可能符合您的预期。