2015-03-15 12 views
5

Tôi đang cố gắng gọi một phương thức trong lớp java với rJava trong một vài ngày và tôi đã không tìm ra những gì tôi đang làm sai. Có lẽ ai đó ở đây sẽ có một số manh mối cho tôi.rJava - .jcall gọi vấn đề: phương pháp với chữ ký không tìm thấy

Tình hình trông như thế này:

  1. tôi tải thư viện và khởi tạo một đối tượng (đó là hoạt động tốt):

    library(rJava) 
    .jinit('C:/javatemp/worker.jar') 
    jobject <- .jnew("worker.concrete") 
    
  2. tôi liệt kê các phương pháp và tôi nhận được kết quả tốt:

    .jmethods(jobject) 
    > [1] "public java.util.List worker.concrete.lookup(java.lang.CharSequence)" 
    
  3. Tôi đang chuẩn bị cấu trúc đầu vào cũng hoạt động tốt:

    word <- .jnew("java/lang/String", "a word") 
    input = .jcast(word, "java/lang/CharSequence", check = TRUE) 
    
  4. Tuy nhiên khi tôi đang cố gắng để thực hiện phương pháp tôi nhận được một lỗi rằng phương pháp như vậy không tồn tại ...

    out = .jcall(jobject,"Ljava/util/List","lookup",input) 
    > Error in .jcall(jobject, "Ljava/util/List", "lookup", input) : 
    method lookup with signature (Ljava/lang/CharSequence;)Ljava/util/List not found 
    

Có ai có một ý tưởng làm thế nào để gọi phương thức như vậy ?

Trả lời

6

Xin lỗi vì đã trả lời một câu hỏi cũ, nhưng điều này đã làm phiền tôi một thời gian. Câu trả lời là: ;

Định dạng loại đặc điểm kỹ thuật cho loại trả về không nguyên thủy là Lpackage/subpackage/Type; - nó phải kết thúc bằng dấu chấm phẩy. Vì vậy, trong ví dụ trên, bạn sẽ cần:

out = .jcall(jobject,"Ljava/util/List;","lookup",input) 
+0

wow, điều này không rõ ràng. Không tìm thấy tài liệu rõ ràng. Mất một thời gian cho tôi là tốt. Cảm ơn. – Alok

+0

Bây giờ, điều này ";" câu trả lời phải đi vào tài liệu rJava. Cảm ơn Martin. – Vortex

Các vấn đề liên quan