Pregunta

Estoy tratando de ejecutar un programa Java de mi código Ruby.

Mi código es algo así como:

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


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

Mi problema es que el comando no se ejecuta con éxito de ninguna manera. Sé que %X, Backticks se ejecuta en una subshell, por lo que probablemente faltan algunas variables Env. Sin embargo, esperaba que Kernel.System, Kernel.Exec tuviera éxito.

El comando funciona bien si lo escribo directamente en un shell. ¿Alguna ayuda en la depuración de esto?

¡Gracias!

¿Fue útil?

Solución

Resulta que el problema era que no estaba cerrando los archivos que estaba creando.

Aparentemente, eso estaba bien cuando lo invocaba directamente desde el caparazón o directamente de .sh, porque el guión de Ruby ya había salido.

Sin embargo, cuando invocaba esto desde el script Ruby, no podría acceder al archivo y crear problemas.

En pocas palabras: ¡Cierre sus archivos más que medio día de trabajo suelto!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top