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 !
Pouvez-vous montrer votre code? – SilverNak
J'ai oublié de mettre mon code avant, la première fois, corrigé! – dFont