2011-02-15 13 views
10

Estoy tratando de usar R para enganchar el código de Java del proyecto GSRad. El código de GSRad Java es available online y viene como un jar de proyecto One-Jar (no estaba familiarizado con One-Jar hasta hoy). Puedo ejecutar el archivo de un tarro dandy con el siguiente comando (después de descomprimir el archivo desde el siguiente enlace):Frustración usando rJava para llamar a un jar de Java de un tercero

java -jar gsrad_sample.jar 

Cuando me pop abrir el archivo gsrad_sample.jar veo un frasco titulado clima_GSRAD-1.0. 0.jar en el directorio/lib/directorio que contiene los archivos de clase que quiero conectar con R. he sacó el frasco de mi afecto y trató lo siguiente, en vano:

library(rJava) 
.jinit() 
.jaddClassPath("/home/jal/Documents/DSSAT/gsrad/clima_GSRAD-1.0.0.jar") 
.jnew("cra/clima/gsrad/GSRBristowCampbellStrategy") 

algún consejo sobre ¿Cómo podría enganchar las clases dentro del clima_GSRAD-1.0.0.jar? Estoy desconcertado.

EDITAR

El sitio de GSRad requiere registro que es molesto. El archivo comprimido completo que contiene la documentación de Doxygen para el paquete de Java, así como el archivo jar de One-Jar está disponible here y si abre ese abrir el jar que tiene las clases que quiero conectar es this one.

Respuesta

8

Déjame prologar mi respuesta diciendo que no soy un experto en Java/rJava, así que me disculpo si esto no es 100% correcto. Sin embargo, espero que sea un paso en la dirección correcta.

Comience por descomprimir gsrad_sample.jar en (o ajuste sus rutas en función de dónde lo descomprime). A continuación, añadir todo el contenido de C:/gsrad/lib a su ruta de clase:

library(rJava) 
.jinit() 
.jaddClassPath(dir("C:/gsrad/lib", full.names=TRUE)) 
.jclassPath() 
.jnew("cra/clima/gsrad/GSRBristowCampbellStrategy") 
+2

Me gustaría poder aprender algo de este otro que, "trate de añadir una rama más alta a la ruta de clase cuando las cosas no funcionan." Los classpaths me parecen misteriosos encantamientos. –

+0

@JD Long: también podría ser que la clase que desea utilizar dependiera de las clases en esos otros archivos jar. –

+1

esa es mi sospecha también. Pero me deja con la pregunta persistente, "¿cómo pude haber sabido eso ... excepto a través de prueba y error?" –

Cuestiones relacionadas