Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-09-2005
tryasta tryasta is offline
Registrado
 
Registrado: may 2005
Posts: 8
Poder: 0
tryasta Va por buen camino
Question Problemas con ShellExecute y Java.

Hola. Vuelvo a haceros una pregunta sobre un problema al que no le encuentro solución, a ver si alguno tiene una brillante idea.


Resulta que mi programa debe acabar lanzando un comando en Java. Dicho comando lo llamarenos "jreNotes.cmd". Digamos también, que "jreNotes.cmd" es similar a otro comando probado y requeteprobado, que es "jreCoher.cmd".

si yo ejecuto :

Código Delphi [-]
 ShellExecute( 0 , 'open' , PChar( 'jreCoher.cmd' ) , parametros , '' , SW_SHOWNORMAL );
todo va como la seda.

Sin embargo, si ejecuto

Código Delphi [-]
 ShellExecute( 0 , 'open' , PChar( 'jreNotes.cmd') , parametros , '' , SW_SHOWNORMAL );
No funciona nunca.

en particular me da el error :

Cita:
.\set_con no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable

Exception in thread "main" java.lang.NoClassDefError: COM/DMAExNotes
El caso es que los parámetros son diferentes en cada aplicación aunque en realidad hagan cosas muy parecidas. Pero, pero, pero pero (Y aqui viene el gran miterio que me acaba de dejar patidifuso), pero, repito, pero, pero, si yo ejecuto cualquiera de los dos comandos jreNotes.cmd o jreCoher.cmd desde la linea de comandos de Windows con sus correspondientes parámetros, SIEMPRE se ejecutan bien.

La cuestión sería: alguien sabe por qué ShellExecute me da un resultado diferente que la ejecucion desde la linea de comandos de Windows? Tambien lo he probado con winexec.

Gracias, muchachos

Última edición por dec fecha: 05-09-2005 a las 15:35:31. Razón: (Encerrar el código en la etiqueta DELPHI)
Responder Con Cita
  #2  
Antiguo 05-09-2005
tryasta tryasta is offline
Registrado
 
Registrado: may 2005
Posts: 8
Poder: 0
tryasta Va por buen camino
Problema resuelto

Hola. Al final, resultó ser mucho más sencillo de lo esperado.

La cuestión básica es que Java es un lenguaje interpretado. Eso significa que no sale un ejecutable del proceso de programación (no se compila). Para eso es necesario tener la maquina virtual java (JVM), que en cada plataforma, interpreta y compila y saca el ejecutable.

Pues era en ese paso, que Java (y no delphi) fallaba. La ejecucion de una instruccion java como jreNotes.cmd necesita del path de TODAS las librerias para que la maquina virtual java sea capaz de, en runtime, encontrarlas y compilarlas.

Una vez puesto el path de ejecución, ha sido coser y cantar.

Gracias por leerme, al menos

Corolario: Nunca podrá haber en Java, librerías sin su path bien especificado y bien localizado, para evitarse problemas en runtime.
Responder Con Cita
  #3  
Antiguo 05-09-2005
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Poder: 20
OSKR Va por buen camino
Es cierto lo q dices, ademas si no quieres agregar la ruta actual al classpath puedes hacer esto:

ShellExecute(0,'open' , PChar( 'java') , PChar(' -cp . jreCoher.cmd' + parametros),'', SW_SHOWNORMAL);
siendo jreCoher un package, si es un jar seria java -jar -cp . jreCoher.cmd. En ambos casos deberia estar en la misma ruta del exe q lo llama
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:29:15.


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
Copyright 1996-2007 Club Delphi