Pessoal,
Eu tenho um programinha bem simples que invoca um batch file atraves de uma
chamada a Runtime.exec() (vide codigo fonte no final do e-mail). O arquivo
"MyBatchFile.bat", que eh invocado por este programinha, eh mais ou menos
assim:

@echo off
cls
set CLASSPATH=%1
set JAVA_HOME=%2
start %JAVA_HOME%\bin\javaw -ms64m -mx128m my.package.my.Class

Ou seja, "seta" CLASSPATH, JAVA_HOME e invoca outro programa que sera
inicializado em um processo a parte. O que eu quero eh que somente o
processo inicializado pelo arquivo batch continue rodando e que a VM que o
chamou possa chamar System.exit(0).

Com Windows NT o programa que eu fiz funciona perfeitamente (vide metodo
main mais a frente), ele invoca o batch file, e espera que o processo criado
retorne o primeiro String. Assim que isso acontece a VM "pai" pode terminar.
Com Windows 2000 o programa nao funciona, por alguma razao "nao da tempo" de
a VM inicializada pelo batch file inicializar my.package.my.Class

Nao sei ao certo se eu deveria estar somente "esperando o primeiro String" e
saindo imediatamente, ou seja, se eu posso entender isso como sinal de que o
processo "pai" pode sair, ou se eu estou fazendo alguma outra coisa errada.
A proposito, o batch file funciona em ambos os sistemas operacionais, ou
seja, o problema eh realmente o programa.

Alguem teria alguma dica para me dar? Obrigado!

Ai' vai o codigo fonte (eh bem pequeno)...

public static void main(String[] args) {
  StringBuffer cmd = new StringBuffer("MyBatchFile.bat ");
  try {
    Properties props = System.getProperties();

    // CLASSPATH
    String classpath = props.getProperty("java.class.path");
    cmd.append("\"");
    cmd.append(classpath);
    cmd.append("\" ");

    // JAVA_HOME
    String javaHome = props.getProperty("java.home");
    cmd.append(javaHome);

    // GET RUNTIME AND CREATE NEW PROCESS
    Runtime rt = Runtime.getRuntime();
    Process p = rt.exec(cmd.toString());

    InputStream is        = p.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br     = new BufferedReader(isr);

    // make sure that the application was already started and quit
    String line = br.readLine();
    System.exit(0);

  } catch (Exception e) {
    e.printStackTrace();
  }
}

---------------------------------
Andre Mendonca, Software Engineer
[EMAIL PROTECTED]
http://www.sknt.com

Sakonnet Technology, LLC
594 Broadway, Suite 1008
New York, NY 10012

Tel (212) 343-3170 x109
Fax (212) 343-3103



------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a