JVM Lançado via CreateProcess () perde Classpath biblioteca
Pergunta
Eu lançar o seguinte linha de comando (processo) de um Windows VC ++ 6 programa usando CreateProcess (ou _spawnv ()):
- java -cp c: \ dir \ updates.jar; c: \ dir \ main.jar Principal
e actualizações de classe em updates.jar (overiding alguns em main.jar) não são lidos ou encontrados. É como se a biblioteca updates.jar não pode ser encontrado ou ler.
Se eu lançar a mesma linha de um atalho, ou a partir da linha de comando adequada, tudo é encontrado e executado corretamente.
Se eu lançar uma JVM a partir da linha de comando, mantê-lo funcionando, e inicie o stub executável (acima), então tudo funciona bem também. (Isso faz parecer que a questão é uma coisa direitos de arquivo).
Qualquer visão seria muito apreciada!
- Edward
Solução
Tente usar utilitário FileMon da Microsoft para descobrir o que está acontecendo. Defina o filtro de inclusão de "atualizações" de se concentrar no problema.
http://technet.microsoft.com/en-us/sysinternals /bb896642.aspx
Outras dicas
Você já tentou isso em outra máquina? Outro OS? Qual JVM você está usando? Você já tentou diferentes JVMs?
Você pode fornecer-nos com um exemplo mínimo que demonstra o problema?
Graças jdigital !
Eu tentei FileMon e ele me mostrou o que eu estava fazendo de errado. O CreateProcess chamada executável () teve um identificador de arquivo não fechada para updates.jar de uma tentativa de copiar o JAR atualização anterior. Bad código que funciona no ambiente de produção, mas não no ambiente de teste.