Olá, pessoal!
Fiz um programa, e está ocorrendo uns probleminhas no Windows 7. Ao clicar no botão que abre um JFileChooser, meu programa fecha do nada, e no console aparece essa mensagem:
[code]#
A fatal error has been detected by the Java Runtime Environment:
EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x748e7610, pid=4680, tid=2784
JRE version: 6.0_26-b03
Java VM: Java HotSpot™ Client VM (20.1-b02 mixed mode, sharing windows-x86 )
Problematic frame:
C [ole32.dll+0x37610]
An error report file with more information is saved as:
c:\Program Files (x86)\MedFour Technic\hs_err_pid4680.log
If you would like to submit a bug report, please visit:
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.
#[/code]
O problema é que isso não acontece TODA vez.
Acontece em aproximadamente 50% das vezes que se aperta o botão do JFileChooser.
Gostaria de saber se alguém sabe o que pode estar fazendo dar esse erro.
Algumas observações:
Esse erro deu em máquinas com o Windows 7 Professional 64 bits e 32 bits.
Ambos estavam usando a JRE 6u22. Eu atualizei a JRE da máquina 64 bits pra 6u26 (última versão do site) e o erro continuou.
Eu instalei o Virtual Box aqui no meu PC e instalei o Windows 7 Home Basic para fazer testes, mas não encontrei erro.
Até mais
Estranho. Por acaso há algum software, que veio com essa máquina, e que instale um menu de contexto no Windows Explorer?
Por exemplo, neste exemplo de menu de contexto (clicar com o botão direito mostra esse menu) o WinRAR, o McAfee e o Microsoft OneNote instalaram coisas.
Quando você fez o teste em uma máquina virtual, provavelmente ela estava bem “pelada” e você não conseguiu pegar o erro, porque não havia nada estranho instalado nela.
Humm…
Estou usando o INNO Setup pra instalar o software no cliente e estou executando essa instrução antes da instalação:
[code]function InitializeSetup(): Boolean;
var
version: String;
msg : String;
ResultCode: Integer;
begin
Result := true;
msg := ‘To make the setup possible, is needed install the lastest Java version.’ + #13 + ‘Download Java at http://www.java.com’;
if RegQueryStringValue(HKEY_LOCAL_MACHINE,‘SOFTWARE\JavaSoft\Java Runtime Environment’, ‘CurrentVersion’, version) then
begin
if strtofloat(version) < 1.6 then
begin
MsgBox(msg, mbInformation, MB_OK);
Result := false;
end
else
exec(‘regsvr32’, '/s/u ’ + GetWinDir() + ‘\system32\zipfldr.dll’, ‘’, SW_HIDE, ewWaitUntilTerminated, ResultCode);
Result:= true;
end
else
begin
MsgBox(msg, mbInformation, MB_OK);
Result := false;
end;
end;[/code]
Resumindo:
Eu verifico a versão do java e emito uma mensagem, caso a versão seja menor que 1.6.
Depois executo este comando: regsvr32 /s/u c:\windows\system32\zipfldr.dll para corrigir uma falha do Windows XP com relação ao JFileChooser.
Faço isso porque o JFileChooser tem se mostrado muito lento no Windows XP e eu vi nesses links que esse comando ajudaria:
http://bugs.sun.com/view_bug.do?bug_id=5050516
http://bugs.sun.com/view_bug.do?bug_id=6578753
http://www.bosit.be/blog/?p=51
Vou verificar isso aqui.
Obrigada pela ajuda.
Olá!
Acredito que os comandos que eu escrevi no post anterior não estejam causando a falha, conforme eu disse, porque o comando regsvr32 /u c:\windows\system32\zipfldr.dll exibe uma mensagem de erro no windows 7 (mesmo quando executado como adminstrador), apesar da dll existir.
Tou tentando resolver de outro jeito, mas se alguém souber alguma coisa, por fv, me ajudem
Obrigada
Olá!
Obrigada pela ajuda!
Infelizmente não consegui descobrir o que pode estar acontecendo, mesmo instalando vários programas aqui no meu Windows 7. (winRar, etc)
Mas resolvi de outra maneira. Estou fazendo um JFileChooser aqui pra rodar somente no win7.
Essa DLL, zipfldr.dll é linkada estaticamente à outras bibliotecas. Caso alguma dessas bibliotecas esteja corrompida, a zipfldr.dll não será carregada corretamente e pode quebrar sua aplicação. Veja esse link para mais informações:
http://www.win7dll.info/zipfldr_dll.html