Re:java.lang.Error durante transferTo() do FileChannel

2 respostas
T

Será que dá para usar aquele famoso código “cabrito”:

if (Windows 98) {
    copiar os arquivos com FileInput/FileOutputStream
} else {
    copiar os arquivos com java.nio;
}

Windows 9X/ME é terrível - por exemplo, embora se diga que o Eclipse suporte o Windows 98, nunca vi o Eclipse 3.1 funcionar direito nesse ambiente. Acho que o NetBeans nem tenta iniciar nesse ambiente “podre”.

2 Respostas

vance

Olá pessoal,

Estou utilizando dois objetos FileChannel para copiar um arquivo da máquina do usuário para um servidor samba. O servidor é mapeado normalmente na máquina do usuário e os arquivos são copiados via windows numa boa.

Quando rodo o programa no windows XP, ele copia os arquivos e faz todo o processamento sem problemas, porém ao utilizar o windows 98 ele manda a mensagem de erro abaixo:

java.lang.Error: Cleaner terminated abnormally 
                 at sun.misc.Cleaner.clean(Unknown Source) 
                 at sun.nio.ch.FileChannelImpl.unmap(Unknown Source) 
                 at sun.nio.ch.FileChannelImpl.transferToTrustedChannel(Unknown Source)
                 at sun.nio.ch.FileChannelImpl.transferTo(Unknown Source) 
                 at lib.shxlib.ShxArquivo.copiaArquivo(Unknown Source) 
                 at lib.shxlib.ShxArquivoTexto.copiaArquivo(Unknown Source) 
                 at tintas.mix.FrmMixDisponibiliza.copiaDados(Unknown Source) 
                 at tintas.mix.FrmMixDisponibiliza.access$600(Unknown Source) 
                 at tintas.mix.FrmMixDisponibiliza$Atualiza.run(Unknown Source) 
                 at java.lang.Thread.run(Unknown Source) 

Caused by: java.io.IOException: Flush failed 
                 at sun.nio.ch.FileChannelImpl.unmap0(Native Method) 
                 at sun.nio.ch.FileChannelImpl.access$000(Unknown Source) 
                 at sun.nio.ch.FileChannelImpl$Unmapper.run(Unknown Source) 
                 ... 10 more

O que eu achei na net, inclusive no forum da Sun, foi de Errors causados por locks do arquivo na rede, mas no meu caso não é, porque o transferTo só é executado depois de ter o lock do arquivo.

Alguém sabe se o problema é causado por alguma coisa no windows 98, ou no Novell, ou como o samba gerencia isso?

vance

Já resolvi aqui. Vou usar File(Input/Output)Stream sempre.
Valeu pela dica.

Criado 24 de abril de 2006
Ultima resposta 25 de abr. de 2006
Respostas 2
Participantes 2