2012-08-07 5 views
0

R 기반 응용 프로그램에서 Java 코드의 호스트를 활용하기 위해 rJava로 작업하기 시작했습니다. 기본 설정이 작동하는 것을 알고 있으므로 간단한 "Hello world"유형을 시도했습니다. 그러나 나는이 기본 문제를 .jcall을 사용하여 해결할 수 있다면 여러 문제가 해결 될 것으로 기대하고 있습니다..jcall의 매개 변수 전달

> cal = new(J("java/util/GregorianCalendar")) 
> obj = new(J("au.gov.ips.dataarchive.TIndex")) 
> obj$monthlyT(cal) 
[1] 77 
> .jcall(obj,"I","monthlyT",cal) 
    Error in .jcall(obj, "I", "monthlyT", cal) : 
    method monthlyT with signature (Ljava/util/GregorianCalendar;)I not found 

내 이해를 돕기 위해 3 번째 줄과 4 번째 줄은 동일하며 동일한 결과를 만들어야합니다. 분명히 내가 뭔가 잘못하고있다. 나는 그래서 제가이 질문에 대한 답을 제공해야 할 수도 있습니다 자바 객체에 대한 어떤 다른 정보를 알려 주시기 바랍니다, 자바 전문가가 아니다

static public Integer monthlyT(Calendar month) 

다음 'monthlyT'방법으로 자바 코드에 정의되어 있습니다.

+0

"I"는 int return 유형입니다. 당신은 java.lang.Integer를 리턴합니다. .jcall은 이런 일에 열광합니다. –

+0

감사. 그것에 대해 자세하게 말 해 주실 수 있나요? 나는 지금 시도한 .jcall (obj, "Ljava/lang/Integer;", "monthlyT", cal) 성공하지 못했습니다. 정확한 구문은 무엇입니까? – Bogdanovist

답변

1

caljava.util.GregorianCalendar이고, java.util.Calendar이 아닙니다. 낮은 수준의 .jcall 인터페이스 (이유는?)를 사용하려면 직접 캐스팅해야합니다. 그래서 이런 식으로 :

.jcall(obj,"I","monthlyT",.jcast(cal, "java/util/Calendar"))