2017-07-17 7 views
0

J'essaie d'exécuter un script R dans un programme Java, toutes les dépendances sont installées avec Maven mais le problème persiste. Dans mes recherches pour résoudre le problème, j'ai trouvé que jfield est une fonction fournie par rJava, mais je ne suis pas sûr si rJava (paquet Renjin) l'a implémenté.Renjin IOException lors du chargement du paquet Rweka, impossible de trouver la fonction '.jfield'

¿Y a-t-il un moyen de vérifier cela? Ou il me manque quelque chose?

Mon programme utilise ces bibliothèques, tous pris en charge par Renjin:

  • Rjava
  • RWeka
  • RWekajars

et je suis en utilisant betadriven Maven trough repo publique pour les installer. ESt Ici, la classe principale:

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")); 

     } 
    } 
} 

Et voici mon 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> 

La première sortie de ligne quand je lance le programme:

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

Merci à l'avance !

+0

Pouvez-vous montrer votre code? – SilverNak

+0

J'ai oublié de mettre mon code avant, la première fois, corrigé! – dFont

Répondre

0

Renjin ne supporte pas encore complètement les paquets rJava. Une des choses qui semble manquer est un wrapper pour .jfield. Vous pouvez trouver la couche ici compatibilité:

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

demandes Pull bienvenue!

+0

Donc, je n'ai rien à faire jusqu'à ce que quelqu'un fasse l'emballage, parce que je pense que je n'ai pas encore les compétences pour le faire. Néanmoins, il y a un exemple d'implémentation d'autres wrappers? Peut-être que je peux essayer de le faire. Merci pour vos réponses! – dFont