Pregunta

Tengo un programa Java que es principalmente GUI y muestra datos que se escriben en un archivo xml desde una herramienta de línea de comando c ++. Ahora quiero agregar un botón al programa java para actualizar los datos. Esto significa que mi programa tiene que llamar a la funcionalidad c ++.

¿Es la mejor manera de llamar al programa desde Java a través de una llamada al sistema? El programa c ++ se compilará para mac os y windows y siempre debe estar en el mismo directorio que el programa java.

Me gustaría generar un ejecutable. ¿Se puede almacenar el programa c dentro del jar y llamarlo desde mi programa?

¿Fue útil?

Solución

Suponiendo que no hay un mejor método de comunicación disponible (SOAP, ICE, Sockets, etc.), llamaría al ejecutable usando Runtime.exec () . JNI se puede usar para interactuar directamente, pero no lo recomendaría. No, no puedes poner un ejecutable en el jar. Bueno, puedes, pero no puedes ejecutarlo, ya que el shell no sabe cómo ejecutarlo.

Otros consejos

Si tiene acceso al código y desea una experiencia 'interactiva' con el programa externo (por ejemplo, hacer una llamada, obtener resultados, hacer llamadas adicionales), investigue JNI, que le permite llamar a un código C o C ++ desde un Java aplicación incluyendo & amp; vincular el jugo JNI a su aplicación C o C ++ con.

Ver:

http://en.wikipedia.org/wiki/Java_Native_Interface

http://www.acm.org/crossroads/xrds4-2/ jni.html

Si realmente solo necesita una aplicación de lanzamiento y obtener resultados tipo de solución, consulte Runtime.exec (), que le permite iniciar un programa externo & amp; capturar su salida.

Ver: http://www.javaworld.com /javaworld/jw-12-2000/jw-1229-traps.html?page=1

http://www.rgagnon.com/javadetails/java-0014.html

También puede consultar la API de acceso nativo de Java (JNA) .

Para responder a su pregunta final, no puede ejecutar un ejecutable desde su jar.

Sin embargo, puede almacenarlo dentro de su jar y extraerlo a un directorio / archivo temporal antes de ejecutarlo (verifique su presencia la primera vez y extráigalo si es necesario). Esto simplificará un poco su distribución, ya que solo tiene el jar para distribuir, y asegura que esté ejecutando un ejecutable que coincida con su código Java jarred.

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