Вопрос

Я пытаюсь выполнить программу Java из моего кода Ruby.

Мой код - что -то вроде:

    cmd = "java -cp \"path/lib/*\" com.blah.blah"


#    %x[#{cmd}]
#    `#{cmd}`
#    Kernel.system(cmd)
    Kernel.exec(cmd)

Моя проблема - это команда не успешно работает ни в коем случае. Я знаю, что %x, Backticks работает в подборке, поэтому, вероятно, некоторые переменные ENV отсутствуют. Однако я надеялся на Kernel.system, kernel.exec, чтобы добиться успеха.

Команда работает нормально, если я напрямую введет ее в оболочку. Любая помощь в отладке?

Спасибо!

Это было полезно?

Решение

Оказывается, проблема заключалась в том, что я не закрывал файлы, которые я создавал.

Очевидно, это было хорошо, когда я ссылался на него прямо из раковины или непосредственно от .sh, потому что сценарий Ruby уже вышел.

Однако, когда я бы вызвал это из сценария Ruby, он не сможет получить доступ к файлу и создаст проблемы.

Итог: закройте свои файлы, оставшуюся полдень работы!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top