Разочарование с использованием rJava для вызова сторонней Java-банки
Я пытаюсь использовать R, чтобы перехватить код Java из проекта GSRad. Код GSRad Java доступен в Интернете и поставляется как One-Jar jar (я не был знаком с One-Jar до сегодняшнего дня). Я могу запустить файл One-Jar просто dandy, используя следующую команду (после распаковки файла из приведенной выше ссылки):
java -jar gsrad_sample.jar
Когда я открываю файл gsrad_sample.jar, я вижу jar под названием clima_GSRAD-1.0.0.jar в каталоге /lib/, который содержит файлы классов, которые я хочу связать с R. Я вытащил банку моя привязанность и пробовал следующее, безрезультатно:
library(rJava)
.jinit()
.jaddClassPath( "/home/jal/Documents/DSSAT/gsrad/clima_GSRAD-1.0.0.jar" )
.jnew( "cra/clima/gsrad/GSRBristowCampbellStrategy" )
Любые подсказки о том, как я могу зацепить классы внутри clima_GSRAD-1.0.0.jar? Я смущен.
EDIT
Сайт GSRad требует регистрации, которая раздражает. Полный zip файл, который содержит документацию Doxygen для пакета Java, а также файл jar файла One-Jar, доступен здесь, и если вы откроете этот открытый файл jar, который имеет классы, которые я хочу подключить, этот.
Ответы
Ответ 1
Позвольте мне предисловие к моему ответу, сказав, что я не эксперт в Java/rJava, поэтому извиняюсь, если это не на 100% правильно. Надеюсь, что это шаг в правильном направлении.
Начните с разархивирования gsrad_sample.jar
на C:/gsrad
(или настройте свои пути на основе того, где вы разархивируете его). Затем добавьте все содержимое C:/gsrad/lib
в свой путь к классу:
library(rJava)
.jinit()
.jaddClassPath(dir( "C:/gsrad/lib", full.names=TRUE ))
.jclassPath()
.jnew( "cra/clima/gsrad/GSRBristowCampbellStrategy" )