É possível (imagino que sim) a partir do caminho de uma imagem mandar que o SO abra essa imagem em seu visualizador de imagens? Não é minha aplicação que vai exibir a imagem e sim o SO, só preciso “pedir” à ele isso.
Exception in thread "main" java.lang.UnsupportedOperationException: Desktop API is not supported on the current platform
at java.awt.Desktop.getDesktop(Desktop.java:126)
at testes.AbrirImagem.main(AbrirImagem.java:11)
A tradução é "se seu desktop é KDE, no caso do Linux, ou CDE, no caso do Solaris, em vez de Gnome, então essa API não funciona e dá a mensagem “Desktop API is not supported on the current platform”. "
G
gqferreira
Sim, mas…
Estou usando Gnome
E
entanglement
Hum… então retiro o que eu disse. Infelizmente, não tenho aqui um Linux para testar se essa mensagem ocorre sempre (pode ser, por exemplo, que os folgados da Sun simplesmente tenham implementado a classe Desktop apenas para o Windows e talvez o Solaris.)
F
Felagund
Infelizmente ela não é implementada em linux, e eu não encontrei nenhum similar, infelizmente…
Você pode partir para o metodo gambiarronico e fazer uma chamada ao S.O. via System.getRumtime().exec();
pode ser que não funcione também, nunca testei.
E
entanglement
entanglement:
Hum… então retiro o que eu disse. Infelizmente, não tenho aqui um Linux para testar se essa mensagem ocorre sempre (pode ser, por exemplo, que os folgados da Sun simplesmente tenham implementado a classe Desktop apenas para o Windows e talvez o Solaris.)
UPDATE - ela foi implementada para o Windows, para o Solaris (quando usando um desktop Gnome, não um CDE) e para o Linux com desktop Gnome, mas pode ser que sua versão de Gnome não seja compatível com a versão do Gnome que a sua determinada compilação do Java use, então pode ser que ele não consiga carregar as bibliotecas esperadas. Parece aquilo que no Windows chamamos de “DLL Hell” - aquele problema de compatibilidade de versões de código que é um inferno para os programadores Windows. Como se chama esse tipo de coisas no Linux eu não sei, mas sei que existe uma coisa parecida com versões do Kernel, do Gnome etc.
G
gqferreira
Felagund:
Infelizmente ela não é implementada em linux, e eu não encontrei nenhum similar, infelizmente…
Você pode partir para o metodo gambiarronico e fazer uma chamada ao S.O. via System.getRumtime().exec();
pode ser que não funcione também, nunca testei.
É… eu também pensei em fazer assim antes de postar no GUJ, acho que vai ter que ser assim mesmo.
Há… é Runtime.getRuntime().exec();
eog é o visualizador do gnome, nuss… programo em java para nao ficar preso em SO agora to preso no Gnome \o/
if-else AHEUahUEAu
Valeu gente, se surgir outra solucao eu posto…
G
gqferreira
Há… como eu precisava parar a aplicacao enquanto o eog funcionava, criei um Process que recebe o runtime, ai eu mando o process esperar enquanto o eog nao fechar.
Ficou assim:
Process process = Runtime.getRuntime().exec("eog /home/gustavo/Imagens/imagem.png");
process.waitFor();
JOptionPane.showMessageDialog(null, "Se essa mensagem apareceu é porque o eog foi fechado");
Do jeito que estava antes, a aplicacao chamava o eog e morria…
G
gqferreira
Surgiu um problema ^^
Usando o Desktop.getDesktop().open(""); como faco para que a minha aplicacao fique pausada enquanto o programa chamado estiver aberto?
Como preciso fazer com que a minha aplicacao rode em windows e Linux, vou usar os dois esquemas…