FileNotFoundException lançada quando o arquivo existe

Estou enfrentando esse problema estranho.

Estou tentando ler um arquivo localizado em outra máquina como um recurso compartilhado:

\\remote-machine\dir\MyFileHere.txt

Quando executo um aplicativo independente (um arquivo java de 16 linhas), tudo fica bem. Mas quando tento ler o mesmo arquivo usando a mesma classe e o mesmo método em um "mecanismo" de servidor (este é um mecanismo de aplicativo, praticamente como um Java EE Application Server onde você pode executar programas java), o "FileNotFoundException" é jogado.

Embora eu tenha algum tipo de permissão, mapeio o recurso como uma unidade: K: \ Re-execute o meu arquivo java, lê, tudo bem.

Execute novamente o meu arquivo java dentro do "engine" -> FileNotFoundException.

Quando copio o arquivo na máquina local (C: \ MyFileHere.txt), nenhuma exceção é lançada.

Pergunta, questão

O que pode estar causando essa FileNotFoundExcecption?

Estou usando Java 1.5

Até onde eu sei, o mecanismo praticamente usa java de forma transparente.

Alguém já enfrentou algo semelhante?

Pergunta adicional? Qual seria uma boa abordagem para solucionar isso? Estou começando a pensar em uma instalação do tomcat que serve esses arquivos e os lê através de http, mas acho que isso é demais, é por isso que o protocolo SMB é válido em primeiro lugar, não é? E provavelmente não poderei abrir soquetes de qualquer maneira.

O gerenciador de segurança pode ser a causa (nunca usei isso antes, mas sei que ele existe)

Não será lançada uma SecurityException, se esse for o caso?

Muito obrigado.

EDITAR

Resolvido. Obrigado Steve W.

Acontece que esse mecanismo é lançado com o "LaunchAnywhere" da ZeroG. Portanto, é criado um .exe que, por sua vez, executará uma JVM com o aplicativo especificado.

Esta aplicação é auto Launcher. Quando ele inicia o mecanismo, de alguma forma (não consigo descobrir por que ou como) o usuário que possui o processo da JVM é SYSTEM. Como Steve apontou, esse usuário não tem acesso à REDE e, portanto, não pode ler de um recurso compartilhado ou de uma unidade mapeada.

A solução alternativa (enquanto eu relato isso ao fabricante) é criar um arquivo .cmd para iniciar manualmente o mecanismo. Desde que seria iniciado manualmente, o usuário tem acesso à rede.

Eu usei o "Process Explorer" da SysInternals para saber exatamente a linha de comando usada para executar o aplicativo de mecanismo.

QUE BAGUNÇA!

Obrigado a quem postou respostas.

O recurso compartilhado está protegido por um nome de usuário e senha? E se sim, seu mecanismo de aplicativo está sendo executado como esse usuário? Se o seu mecanismo de aplicativo estiver sendo executado como um serviço do Windows, o serviço do Windows não poderá ser executado como a "Conta do sistema local". Esta conta não pode acessar a rede. Você deve configurar seu serviço para ser executado como um usuário com direitos para acessar a unidade compartilhada.

questionAnswers(4)

yourAnswerToTheQuestion