【问题标题】:Call a java method in R using rJava使用 rJava 在 R 中调用 java 方法
【发布时间】:2017-10-30 13:10:42
【问题描述】:

我使用 rJava 从 R 调用 java 代码,试图从 SPMF 工具调用算法。我尝试使用this question 中的包装函数,但这不适用于SPMF 代码。

这是我的 R 代码:

   library(rJava)
   .jinit()
   .jaddClassPath ( "C:/mydrive/eclipse-workspace/myfile/src")
   print(.jclassPath())
   obj <- .jnew("AlgoFPGrowth_Strings")
   s <- .jcall(obj, returnSig= "V", method="runAlgorithm", 
   "input.csv","output.txt") ,  0.4 )

它给了我错误,方法 runAlgorithm with signature (D)V not found

这是java中的主要内容:

    public static void main(String[] args) throws Exception {
    AlgoFPGrowth_Strings fpwindow=new AlgoFPGrowth_Strings();
    String input="input.csv";
    String output="output.txt";
    double minsupp = 0.4; 
    fpwindow.runAlgorithm( input,  output,  minsupp);
    fpwindow.printStats();

} 

我尝试将 returnSig 值更改为 S 和 Ljava/lang/String;但是我遇到了同样的错误,找不到方法

当我用简单的方法将代码应用到不同的java代码上时,有什么想法可以改变我的代码吗?

【问题讨论】:

  • Java 库的用户有一个为某些算法提供 R 接口的示例github.com/pommedeterresautee/spmf
  • 感谢您的回复,我已经从这个工具中提取了一个算法并单独使用它,我相信问题出在 returnSig 但我无法修复它。有什么想法吗?

标签: java r rjava


【解决方案1】:

试试下面的方法,

  1. 更改您的 jclassPath,您可以直接在其中指定 jar 文件的完整路径名,包括 jar 名称,例如 /home/user/mypath/myclass_name.jar

  2. 或者,您可以将 jar 文件解压缩到一个文件夹中,然后在您的 jclassPath 中引用该路径。

如果上述方法不起作用,

  1. 尝试在您调用的同一个类中编写“runAlgorithm”方法。我遇到了调用外部库/类的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多