java - 从 R 调用 Java 的方法
问题描述
试图从 R 调用 Java 方法。我已经为 Java-Gremlin 接口编写了 Java 代码,效果很好。但现在我想调用 R 的方法,所以作为回报,我将从 gremlin 查询中获取输出数据,然后我可以分析数据。但是在R中的'.jcall()'命令中,出现错误,因此无法调用R中的方法。以下是编写的java代码。
import java.util.Map;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph;
public class TinkerGraphTest2 {
TinkerGraph tg = null;
GraphTraversalSource g = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
TinkerGraph tg = TinkerGraph.open() ;
System.out.println("Welcome to Eclipse");
try
{
GraphTraversalSource g = tg.traversal();
g.io("D:\\PID\\data\\air-routes.xml").read().iterate();
}
catch( Exception e )
{
System.out.println("File not found");
System.out.println(e);
System.exit(1);
}
}
public String getDallasRoutes(String country) {
Long n = g.V().has("code",country).out().count().next();
return("There are " + n + " routes from" + country);
}
public Map<?, ?> getDetailsofAirports() {
Map<?,?> aus = g.V().has("code","AUS").valueMap().next();
System.out.println(aus.toString());
@SuppressWarnings("rawtypes")
List city = (List)(aus.get("city"));
System.out.println("The AUS airport is in " + city.get(0));
aus.forEach( (k,v) -> System.out.println("Key: " + k + ": Value: " + v));
return aus;
}
}
该代码运行良好并获得了预期的输出。R代码调用方法getDallasRoutes()。在'.jcall()'中出现错误
library(rJava)
.jinit()
cl_path="....."
.jaddClassPath(cl_path)
test=.jnew("TinkerGraphTest2")
x=.jcall(test,returnSig = "S",method="getDallasRoutes","AUS")
##Error in .jcall(test, returnSig = "S", method = "getDallasRoutes", "AUS") :
java.lang.NoClassDefFoundError: org/apache/tinkerpop/gremlin/process/traversal/dsl/graph/GraphTraversalSource
#tried another command also
p=J("TinkerGraphTest2","getDallasRoutes","AUS")
#Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, :
java.lang.IllegalArgumentException: object is not an instance of declaring class
你能建议我任何解决方案吗?这将有很大的帮助!
解决方案
推荐阅读
- swiftui - 如何在swiftUI中登录页面后隐藏导航栏
- laravel - 插入数据时尝试获取非对象错误的属性“stock_name”
- javascript - 选择选项时调用 javascript 函数但在选项本身内部需要它
- javascript - 将 SVG 图标用作手风琴菜单中的单击图标时如何转换/反转 SVG 图标
- automation - BrowserStack-是否可以自动化测试`
- android - 删除android中折叠工具栏布局内进度条中的滚动效果
- php - 如何在单个 foreach 中使用两个数组
- php - Laravel 中的一对一关系总是需要 first() 吗?
- ios - 我是否需要在 Sign in with Apple 中完成 OAuth 流程(访问令牌的交换码)?
- python - OSError、Type22Error 和其他一些让我难过的问题