A execução do Java a partir de um arquivo de lote do Windows faz com que o arquivo em lote pare

0

Quando executo o Java a partir de um arquivo .cmd do Windows (o Vista 32 bits aqui), o comando Java faz com que o arquivo em lote pare de executar comandos adicionais.

Por exemplo, este é um arquivo test.cmd simples:

java
java

Isso deve fazer com que o Java imprima sua mensagem de ajuda duas vezes. No entanto, quando eu corro em cmd.exe, eu entendo isso:

C:\>test

C:\>java
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    -client       to select the "client" VM
    -server       to select the "server" VM
...

C:\>

O arquivo em lote simplesmente sai quando o Java sai. O que está acontecendo aqui?

    
por jjkparker 10.02.2011 / 23:47

3 respostas

2

Outra possibilidade é que há um batchfile chamado java que está sendo chamado, em vez do java.exe normal (embora o arquivo em lote possa invocar o executável, possivelmente também configurando coisas como o CLASSPATH de antemão). Executar um arquivo batch a partir de outro transferirá a execução para o outro lote de arquivos, não retornando ao invocador. Para executá-lo e continuar a execução do arquivo de lote original, use call:

call java

E veja se isso faz diferença.

    
por 11.02.2011 / 12:18
0

Se você tiver um test.bat e um test.cmd, então digitar test executará test.bat não test.cmd - tente usar o comando test.cmd .


C:\>type test.bat
@echo off
echo a =============================================
java
echo b =============================================

C:\>type test.cmd
echo 1 -------------------------------------------------
java
echo 2 -------------------------------------------------
java
echo 3 -------------------------------------------------

C:\>test

a =============================================

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    -client       to select the "client" VM
    -server       to select the "server" VM
    -hotspot      is a synonym for the "client" VM  [deprecated]
                  The default VM is client.

...

b =============================================

C:\>
    
por 11.02.2011 / 11:57
0

Teste rápido:

C:\> where java

Com isso, você pode descobrir exatamente o que está sendo executado.

    
por 23.08.2011 / 08:18