2011-03-08 5 views
4

현재 R 내에서 Java 코드를 통합하기 위해 R 패키지를 개발 중입니다. 그러나 Java 클래스 메소드를 올바르게 호출하는 데 문제가 있습니다. 지금까지 독립적으로 클래스 파일에 자바 프로그램을 개발하고 컴파일 한 다음 jar 파일로 패키지했습니다. 다음과 같이 내 코드의 샘플은 다음과 같습니다 그러나rjava .jcall 문제

library(rJava) 

.jinit() 

.onLoad <- function(lib, pkg) { 
    pathToSdk <- paste(system.file(package = "mailViz") , "C:\\path\\to\\libs", sep="") 

    jarPaths <- c(paste(pathToSdk, "mail.jar", sep=""), 
      paste(pathToSdk, "mailReader.jar", sep="") 
    )  
    .jpackage(pkg, morePaths=jarPaths) 
    attach(javaImport(c("java.lang", "java.io", "java.mail", "java.util", "java.text"))) 
    packageStartupMessage(paste("mailViz loaded. The classpath is: ", paste(.jclassPath(), collapse=" ")))   
} 


# get method arguments for the class 
#.jmethods("mailReader","readEmailInfo") 

z=.jcall("mailReader", "Ljava/lang/String;", "readEmailInfo", "username", "password") 

, 나는 .jcall 기능을 실행할 때 오류가 나타납니다

Error in .jcall("mailReader", "Ljava/lang/String;", "readEmailInfo", "username", : 
    method readEmailInfo with signature (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; not found 

내가 인수하지만 행운을 변경하는 여러 가지 방법을 시도합니다. 그래서, 두 개의 인수를 전달하는 적절한 호출 (사용자 이름, 암호)를 만드는 방법에 분실하고

[2] "public java.lang.String mailReader.readEmailInfo(java.lang.String,java.lang.String)" 

받는 사람 : 나는 클래스 파일에 .jmethods ("메일 리더")를 실행하면이 사용할 수있는 모든 방법을 나열 자바 클래스 파일.

의견이 있으십니까? 내가이 문제를 여기에 키를 해결 한

답변

1

미리 감사드립니다,

P는 R이

에 전화를하기 전에이 클래스에 액세스 할 수 있도록

mailReader = .jnew("mailReader") 

전화를 사용하는 것입니다

z = .jcall(mailReader, "S", etc....) 

기본적으로 R은 정적 Java 메소드에 액세스 할 수 있습니다.