나는 R 인터페이스를 자바 (Pablo Fernandez에 의해 자바 용으로 성숙한 OAuth 라이브러리)에 쓰려고 노력했다. 자바에서 자신을 상쾌하게하는 방법으로 (rAava를 배우지 않고) rJava를 배우고 더 나은 사용법을 사용했다. Twitter API. 그러나 주로 금요일 오후이기 때문에 재미있을 거라 생각 했어. :) 예상되는 반환 형식 "java.lang.Class"로 작업하는 방법?
불행하게도 내가 아주 멀리 없어
이 ... 내가 .jar file for scribe도 commons-condec 다운로드 (유일한 의존성을, 내가 이후에 압축 해제한다). 나는 netbeans를 사용하여 Java 코드를 실행했으며 그의 twitter example을 사용하여 잘 작동합니다.은 그냥 rJava의 documenation 따라 코드의 처음 몇 줄에 대한 확인을했다 :
# load R packages
library(rJava)
# Initialise
.jinit()
# Add class paths
d1 <- "C:/Users/Tony/Documents/R/java/scribe-1.1.0.jar"
d2 <- "C:/Users/Tony/Documents/R/java/commons-codec-1.4/"
.jaddClassPath(path=c(d1, d2))
을하지만 scribe quick start guide는 다음이 필요한 말한다 :
는// Java Code
OAuthService service = new ServiceBuilder()
.provider(TwitterApi.class)
.apiKey("6icbcAXyZx67r8uTAUM5Qw")
.apiSecret("SCCAdUUc6LXxiazxH3N0QfpNUvlUy84mZ2XZKiv39s")
.build();
나는 알아낼 수 없습니다 rJava 말로 그것을 재 작성하는 방법. 약간의 웹 검색은 내가 부분적으로해야한다는 것을 암시합니다. 그래서 처음에 제가 한 것입니다 :
# Create object (back to R code again)
(service <- .jnew("org.scribe.builder.ServiceBuilder"))
[1] "Java-Object{[email protected]}"
# Set up apiKey and apiSecret using "$" shortcut
service$apiKey("6icbcAXyZx67r8uTAUM5Qw")
service$apiSecret("SCCAdUUc6LXxiazxH3N0QfpNUvlUy84mZ2XZKiv39s")
지금까지는 좋았습니다. 그렇다면 어떤 반환 유형이 공급자 함수에서 예상되는지 알아야합니다.
# Inspect return type
.jmethods(service, "provider")
[1] "public org.scribe.builder.ServiceBuilder org.scribe.builder.ServiceBuilder.provider(java.lang.Class)"
"java.lang.Class"가 필요합니다. 이것은 내가 혼란스러워하는 곳입니다. 그게 무슨 뜻 이죠? 나는 source을보고, "ServiceBuilder"타입의 리턴 타입을 필요로하지만, 어떻게 할 것인가? 이보고 후 내 추측했다 .jcall (참고 : 'use.true.class = TRUE'하지 않았다 아무것도) :
> .jcall(obj = service, returnSig = "Lorg.scribe.builder.ServiceBuilder;", method = "org.scribe.builder.ServiceBuilder.provider", "org.scribe.builder.api.TwitterApi")
Error in .jcall(obj = service, returnSig = "Lorg.scribe.builder.ServiceBuilder;", :
method org.scribe.builder.ServiceBuilder.provider with signature (Ljava/lang/String;)Lorg.scribe.builder.ServiceBuilder; not found
어떤 아이디어가?
제게는 올바른 조치가 필요합니다. 응원하는 사람에게는 소리가 나지만, rJava에 넣는 방법을 알아낼 수 없습니다. –
Java 구문이하는 일은 "java.lang.Class"클래스에서 정적 메서드 "forName"을 호출합니다. rJava 또는 R을 모르지만 c <- J ("java.lang.Class") $ forName ("org.scribe.builder.api.TwitterApi")를 수행 할 수 있습니다. –