いくつかのパラメータを最適化するためにRを使いたいと思います。したがって、私は、Javaのメソッドを持っている:私は何JavaのRからメソッドを呼び出すとメソッドのエラーが見つかりません
Error in .jcall(obj, returnSig = "D", "run", params[1], : method run with signature (DDD)D not found
:私は、次のエラーメッセージが表示されます。このことから
library(rJava)
.jinit(someJar, "-jar")
.jaddClasspath("My\\Class\\Path")
mainR <- function(params, tmpfile=tmpfile()){
obj <- .jnew("Helper/ROptimzer")
c <- .jcall(obj, returnSig = "D", "run", params[1], params[2], params[3])
return(c)
}
params = c(1,2,3)
res <- optim(param, mainR, NULL, method="BFGS")
を:
run(double hw, doubl sw, double no){...; return someDouble)
は、今私が使用してRからこれを呼び出すと思いました間違っている?
EDIT:
私はアプリケーションを実行して、単純なSystemcommandを開始することができたrJava中1(1.7.0_79のx64)と同じパッチおよびビットバージョンを持っているIDEのJava私のJDKを変更Rの中でも私はまだ.jpackageや.jinitを使ってjarファイル全体をJVMにロードすることができません。
EDIT2: JARファイルをJVMに読み込むことができました。 これは私の現在のコードです:事前に任意の助け
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.lang.NoSuchMethodException: No suitable method for the given parameters Called from: .jcheck(silent = FALSE)
ありがとう:私は次のエラーを与える
Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.7.0_79\\jre")
library(rJava)
#.jaddClassPath("C:\\Users\\***\\artifacts")
.jinit("C:\\Users\\***\\xyz.jar","*")
print(.jclassPath())
obj <- .jnew("Helper/Optimizer")
.jmethods(obj)
mainR<-function(params)
{
c <- J(obj,returnSig = "D","optimR",params[1], params[2], params[3])
return(c)
}
param = c(1125,15,5)
res <- optim(param, mainR, NULL, method="BFGS")
print(res)
そして
public double optimR(double hw, double sw, double no) {
try {
return someVeryLongRunningFunction((int)hw, (int)sw,(int) no);
} catch (Exception e) {
e.printStackTrace();
return 0.0;
}
}
!
いいえ.jmethodsは私がプロジェクトを再構築しても、戻り値なしでrun()が期待されるという結果を私に出しました。クラスの名前を変更してクラスを再構築した後も、呼び出す唯一のメソッドとしてrun()が表示されます。注:オブジェクトから派生したものではありません! –
これは単なる狂気です。今、私は何か残ったものを取り除くためにRStudioを閉じます。そして今、それはクラスを見つけることができませんでした。私は何も変更しませんでした。 –