Por que o java não executa a partir de c: \ Windows \ System32?

0

Até alguns dias atrás, eu era capaz de executar aplicativos java a partir da linha de comando, então algo quebrou. Eu rastreei o problema até ser incapaz de invocar java.exe de c: \ Windows \ System32. Mesmo se eu der o nome completo do caminho (c: \ windows \ system32 \ java.exe) ele ainda não executará " 'c: \ Windows \ System32 \ java.exe' não é reconhecido como um comando interno ou externo, programa operável ou arquivo de lote. ". Eu tentei copiá-lo para um nome diferente no mesmo diretório, mas ainda não funcionaria. Apenas quando eu copiei para java.exe para um diretório diferente & colocando esse dir em PATH finalmente consegui fazê-lo funcionar, então esta é a minha solução alternativa, mas eu ainda gostaria de saber por que parou de executar a partir de c: \ Windows \ System32 depois de meses felizes com isso!

    
por Its me 01.02.2013 / 21:45

3 respostas

3

Seu problema pode estar relacionado à instalação do Java JRE de 64 bits versus 32 bits. Eu estava tendo problemas semelhantes onde pude ver

C:\Windows\System32\java.exe

mas não conseguiu executá-lo. Eu encontrei um tópico que sugeria que deveria haver um cópia do arquivo em

C:\Windows\SysWOW64\java.exe

para o Java de 64 bits para executar a partir de um aplicativo de 32 bits.

No meu caso, eu sei que um patch de segurança corporativa confundiu a minha instalação desde que funcionou, então não funcionou logo depois que eu permiti que o patch fosse executado.

    
por 18.09.2013 / 02:17
2

Se você quiser executar o formato java na linha de comando, você deve adicioná-lo ao seu caminho. Vá para o Painel de Controle - > Sistema - > Configurações Avançadas do Sistema, vá para a guia Avançado e clique em Variáveis de Ambiente. Procure a variável de sistema chamada PATH e anexe ;C:\Path\to\java\bin a ela. Agora você deve ser capaz de executar o java a partir do cmd.exe.

    
por 01.02.2013 / 21:56
0

O java.exe em C: \ Windows \ system32 é colocado lá porque esse diretório quase certamente estará mais cedo em seu caminho do que a maioria dos outros. Isto é, é uma maneira de garantir que este java.exe seja encontrado primeiro em seu caminho, não importa quais JREs ou JDKs estejam instalados.

O que este java.exe faz é verificar o seu registro para ver qual java.exe real deve ser lançado, e ele inicia isso para substituir a si mesmo.

O resultado é que, se você quiser executar uma versão específica do java e não tiver privilégios de administrador (editar o caminho do usuário, mas não puder editar o caminho do sistema), será necessário editar o registro para torná-lo a versão desejada, a que será escolhida pelo java.exe em C: \ Windows \ system32.

O documento do Oracle para Java 1.6.x: "O programa de instalação da versão do Java SE Runtime Environment do Microsoft Windows usa o registro para registrar informações de caminho e versão. O ativador de aplicativos no diretório do sistema usa as configurações do registro para obter a localização do Java SE Runtime Environment que eles devem usar ao iniciar um aplicativo. "

... e ...

"Duas cópias do executável java.exe estão instaladas. Uma cópia está no diretório bin do JRE. A segunda cópia é colocada em C: \ windows \ system ou C: \ winnt \ system32, dependendo da Devido à sua localização no diretório do sistema, essa segunda cópia do java.exe pode ser iniciada a partir de qualquer local do diretório sem fornecer o caminho completo para ele.

Esta segunda cópia do executável java.exe depende da configuração de registro CurrentVersion para determinar qual chave de registro deve ser usada para procurar o local do JRE. Por exemplo, se o registro CurrentVersion estiver definido como 1.6, o executável java.exe no diretório do sistema examinará a chave HKEY_LOCAL_MACHINE \ Software \ JavaSoft \ Java SE Runtime Environment \ 1.6 para determinar onde o JRE está instalado. "

    
por 22.08.2014 / 22:07