Rsolnp in Java using Renjin

107 views Asked by At

I am trying to run solnp from withing a Java program. To test that this is working, I am trying to just run the benchmarkids() function. But I can not solve the reference to the package. I've checked the Rsolnp package at http://packages.renjin.org/package/org.renjin.cran/Rsolnp/ and as far as I can tell it is able to be loaded in renjin.

I've added the Maven required package:

<dependency>
   <groupId>org.renjin.cran</groupId>
   <artifactId>Rsolnp</artifactId>
   <version>1.16-b28</version>
</dependency>

I've tried adding the package directly into my project (I'm using Eclipse Neon), still didn't work.

The error I'm getting:

org.renjin.eval.EvalException: Could not load package rsolnp; tried org.renjin.bioconductor:rsolnp, org.renjin.cran:rsolnp
    at org.renjin.primitives.packaging.NamespaceRegistry.getNamespace(NamespaceRegistry.java:160)
    at org.renjin.primitives.packaging.NamespaceRegistry.getNamespace(NamespaceRegistry.java:115)
    at org.renjin.primitives.packaging.Packages.library(Packages.java:41)
    at org.renjin.primitives.R$primitive$library.doApply(R$primitive$library.java:73)
    at org.renjin.primitives.R$primitive$library.apply(R$primitive$library.java:34)
    at org.renjin.primitives.special.InternalFunction.apply(InternalFunction.java:45)
    at org.renjin.eval.Context.evaluateCall(Context.java:302)
    at org.renjin.eval.Context.evaluate(Context.java:222)
    at org.renjin.primitives.special.BeginFunction.apply(BeginFunction.java:38)
    at org.renjin.eval.Context.evaluateCall(Context.java:302)
    at org.renjin.eval.Context.evaluate(Context.java:222)
    at org.renjin.eval.Context.evaluate(Context.java:163)
    at org.renjin.sexp.Closure.doApply(Closure.java:83)
    at org.renjin.eval.ClosureDispatcher.apply(ClosureDispatcher.java:73)
    at org.renjin.eval.ClosureDispatcher.applyClosure(ClosureDispatcher.java:58)
    at org.renjin.sexp.Closure.apply(Closure.java:78)
    at org.renjin.eval.Context.evaluateCall(Context.java:302)
    at org.renjin.eval.Context.evaluate(Context.java:222)
    at org.renjin.eval.Context.evaluateExpressionVector(Context.java:285)
    at org.renjin.eval.Context.evaluate(Context.java:220)
    at org.renjin.script.RenjinScriptEngine.eval(RenjinScriptEngine.java:168)
    at org.renjin.script.RenjinScriptEngine.eval(RenjinScriptEngine.java:127)
    at test.java.RsolnpTest.testRsolnp(RsolnpTest.java:55)

And finally, the code I'm trying to call:

import javax.script.*;
import org.renjin.script.*;

// some other tests to see if 10 * 2 in R works.

 public void testRsolnp()
{
    RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory();
    ScriptEngine engine = factory.getScriptEngine();
    try
    {
        engine.eval("library(rsolnp); benchmarkids();");

    }
    catch (ScriptException e)
    {
        e.printStackTrace();
    }

    // testing code.
}
1

There are 1 answers

0
Parham On BEST ANSWER

package names in R are case sensitive. try: engine.eval("library(Rsolnp); benchmarkids();");