Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Ejecutar Java con winexec (https://www.clubdelphi.com/foros/showthread.php?t=68599)

Thoronluin 23-06-2010 10:29:02

Ejecutar Java con winexec
 
Hola a tod@s:

No se si poner esta pregunta en este foro o en el de Java. El caso es el siguiente:

Tengo un archivo .bat que ejecuta un código en Java. Si lo que hago es esto:

Código Delphi [-]
WinExec(PChar('C:\Aplicacion\ejecu-v10\lanzar-Aplicacion.bat'),SW_SHOWNORMAL);

La cosa funciona.

Si ejecuto directamente el código contenido en el .bat (los puntos suspensivos indica más codigo parecido):

Código Delphi [-]
WinExec(PChar('start javaw -classpath "C:\Aplicacion\ejecu-v10\Interfaz.jar;C:\Aplicacion\ejecu-v10\archivo1.jar;C:\Aplicacion\ejecu-v10\archivo2.jar; ... C:\Aplicacion\ejecu-v10\archivoxx.jar"  Aplicacion.Aplicacion'),SW_SHOWNORMAL);

Me da el siguiente error, ya que la cadena tiene uno 700 y pico caracteres:

String literals may have at most 255 elements

Para solucionarlo divido la cadena en varias cadenas añadiendo (' + ') y ya no me da el error, pero tampoco no me ejecuta el Java.

He probado tambien ponerselo a una cadena auxiliar de tipo String o AnsiString, pero tampoco funciona:

Código Delphi [-]
  Winexec(PChar(cadena),SW_SHOWNORMAL);

¿Alguna idea?¿debería usar el ShellExecute?

Saludos y gracias por adelantado.

jgutti 22-07-2010 15:57:28

thoronluin, para ejecutar java desde un bat utilizo ShellExecute el cuál permite ejecutar el bat con parametros
- Ejemplo:

ShellExecute(Form1.Handle, 'Open', 'c:\ejemplos\archivobat.bat',' -a "c:\ejemplos\archivoentrada .xml" -p "c:\ejemplos\plantillaarchivo.xml" -c "c:\ejemplos\certificado.p12" -s passw -o "c:\ejemplos\archivosalida.xml"',SW_MAXIMIZE );

saludos
jgutti

Thoronluin 22-07-2010 20:21:01

Antes que nada muchas gracias jgutti.

Mi intención es eliminar el bat y ejecutar el java directamente pero voy a intentarlo mañana desde que pueda (si me dejan :)) con el ShellExecute.

¿Sabes si existe límite de caracteres en la string de parámetros? Había leído que tanto en uno como en otro estaba limitada la string del archivo ejecutable y la de los parámetros pero en el texto que leí no lo ví claro.

Saludos y gracias de nuevo, te comentaré el resultado lo antes posible.

Thoronluin 25-07-2010 00:45:18

Hola jgutti:

He seguido tu consejo de usar el ShellExecute y después de varias pruebas y resolver varios problemas, al final funcionó.

Pongo la solución por si a alguien le interesa:

Código Delphi [-]
parametros:='-classpath "C:\Aplicacion\ejecu-v10\Interfaz.jar;C:\Aplicacion\ejecu-v10\archivo1.jar;' + ' ... C:\Aplicacion\ejecu-v10\archivoxx.jar"  Aplicacion.Aplicacion'

ShellExecute(0,'open','javaw', pchar(parametros),'C:\Aplicacion\ejecu-v10\',SW_SHOWNORMAL)
  1. Eliminé el "start" que aparecía en el bat.
  2. La cadena de parámetros como era muy larga para una constante (700 caracteres) la trocee en varias que uní, por esos el uso del más.

Gracias y saludos.


La franja horaria es GMT +2. Ahora son las 04:17:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi