2017-07-17 3 views
0

Ich versucht auszuführen ein R-Skript in einem Java-Programm, alle Abhängigkeiten installiert sind mit Maven, aber das Problem ist immer noch da finden.Renjin IOException beim Laden Paket Rweka, könnte nicht funktionieren ‚.jfield‘

In meiner Forschung das Problem, das ich, dass jfield gefunden zu beheben, ist eine Funktion von rjava vorgesehen, aber ich bin nicht sicher, ob rjava (Renjin Paket) es umgesetzt.

¿Gibt es eine Möglichkeit, dies zu überprüfen? Oder ich vermisse etwas?

Mein Programm verwendet diese Bibliotheken, die alle von Renjin unterstützt:

  • rjava
  • RWeka
  • RWekajars

Und ich bin betadriven öffentlichen Repo-Trog Maven, sie zu installieren. Hier ist es die Hauptklasse:

package org.dfont.renjin; 

import org.renjin.script.RenjinScriptEngineFactory; 
import javax.script.ScriptEngine; 


public class TryRenjin { 
    public static void main(String[] args) throws Exception { 
     // create a script engine manager: 
     RenjinScriptEngineFactory factory = new RenjinScriptEngineFactory(); 
     // create a Renjin engine: 
     ScriptEngine engine = factory.getScriptEngine(); 

     // ... put your Java code here ... 
     if(engine == null) { 
      throw new RuntimeException("Renjin Script Engine not found on the classpath."); 
     } 

     else{ 
      engine.eval(new java.io.FileReader("/home/dfont/renjinTest/pruebaCalculo.R")); 

     } 
    } 
} 

Und hier meine pom.xml,

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.dfont.renjin</groupId> 
    <artifactId>renjin</artifactId> 
    <version>0.1</version> 
    <dependencies> 
     <dependency> 
      <groupId>org.renjin</groupId> 
      <artifactId>renjin-script-engine</artifactId> 
      <version>RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.renjin.cran</groupId> 
      <artifactId>rJava</artifactId> 
      <version>0.9-8-renjin-5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.renjin.cran</groupId> 
      <artifactId>RWekajars</artifactId> 
      <version>3.9.1-3-b3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.renjin.cran</groupId> 
      <artifactId>RWeka</artifactId> 
      <version>0.4-34-b5</version> 
     </dependency> 


    </dependencies> 
    <repositories> 
     <repository> 
      <id>bedatadriven</id> 
      <name>bedatadriven public repo</name> 
      <url>https://nexus.bedatadriven.com/content/groups/public/</url> 
     </repository> 
    </repositories> 
    <build> 
     <plugins> 
      <plugin> 
       <!-- Build an executable JAR --> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>3.0.2</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <mainClass>org.dfont.renjin.TryRenjin</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>2.4.3</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Die erste Zeile ausgegeben, wenn ich das Programm ausführen:

Exception in thread "main" org.renjin.eval.EvalException: IOException while loading package org.renjin.cran:RWeka: could not find function '.jfield' 

Vielen Dank im Voraus !

+0

Können Sie Ihren Code anzeigen? – SilverNak

+0

Ich habe vergessen, meinen Code vor dem ersten Mal noob, fixed! – dFont

Antwort

0

Renjin noch nicht die volle Unterstützung für rjava Pakete. Eines der Dinge, die zu fehlen scheinen, ist ein Wrapper für .jfield. Sie können die Kompatibilitätsschicht finden Sie hier:

https://github.com/bedatadriven/renjin-rjava/blob/master/src/main/R/rJava.R

Pull-Anfragen willkommen!

+0

Also, ich habe nichts zu tun, bis jemand den Wrapper erledigt, weil ich denke, dass ich noch nicht die Fähigkeiten dafür habe. Dennoch gibt es ein Beispiel für andere Wrapper-Implementierung? Vielleicht kann ich es versuchen. Danke für Ihre Antworten! – dFont