Подтвердить что ты не робот

Разочарование с использованием 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, который имеет классы, которые я хочу подключить, этот.

4b9b3361

Ответ 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" )