Abrir arquivo usando RunTime.getRunTime() no Linux

16 respostas
P

Tenho uma aplicação que roda localmente em Window, e nessa aplicacao uso o comando seguinte para abrir um arquivo:

try{
   comando = (Diretorio+"/"+nomeArquivo);
        Runtime.getRuntime().exec("rundll32 SHELL32.DLL, ShellExec_RunDLL " +comando);
      
}catch(IOException e){ e.printStackTrace() ; }

Porem, meu servidor roda Linux e esse comando obviamente nao funciona,

gostaria de saber se voces sabem algum comando que seja equivalente a esse em linux.

Obrigado!

16 Respostas

P

Ninguem?

T

Não sou especialista em Linux, mas acho que se o desktop do usuário for Gnome, então é possível usar o Nautilus para invocar o programa de acordo com o tipo desse arquivo. Ou então, se o desktop for KDE, usar o Konqueror. Acho que ambos podem ser invocados via script para abrirem os arquivos de acordo com os tipos dos arquivos, mas é necessário perguntar para algum especialista em Unix.

Inscreva-se no fórum: http://www.vivaolinux.com.br/

B

Cara, estou com o mesmo problema! Vc encontrou solução?

T

Se você usar o Java 6 é mais fácil, consulte a classe java.awt.Desktop que lá existem os métodos que você precisa para abrir arquivos.

H

o seu programa utiliza dlls do windows??

B

Não. Estou querendo abri um .jar no windows e linux. Só que esse comando, funciona no prompt, mas via código não funfa.

Process p = Runtime.getRuntime().exec("java -jar \"C:\\Documents and Settings\\planeta\\ListaGruposRamais.jar\"");
P

Tbém estou com o mesmo problema… Qdo rodo no Windows(local) funciona perfeitamente, só que qdo faço up-load dos arquivos para o servidor (LINUX) a aplicação causa ERRO!!!

String comando = “C:\balanca\Peso.exe”;
Runtime.getRuntime().exec("rundll32 SHELL32.DLL, ShellExec_RunDLL " + comando);

Por acaso alguém possui alguma solução pra isso?!?!?!

Desde Já agradeço

[email removido]

T

peso.exe não roda no Linux (a menos que você use o Wine e veja se ele é compatível com o Wine).
rundll32 provavelmente não roda no Linux, mesmo usando o Wine.

P

Thuingol vc tem razão RUNDLL32 realmente não funciona no linux… eu estava usando esta linha de comando no WINDOWS… tentei fazer assim no LINUX:

Process process = Runtime.getRuntime().exec(“cmd.exe /C start C:\balanca\Peso.exe”);

mas tbém não adianta… a pagina web deveris chamar este arquivo exe da pastinha do cliente… ja tentei mapear a unidade de rede e passar o endereço por auqi mas tbem não funciona alguem sabe se tem como fazer isso???

Tipo, na hora que eu clicar no botão pra chamar esta pagina com esta linha ele deveria chamar na mauqina local (CLIENTE) este arquivo… Posso fazer isso pq vão ser apenas 5 micros com 5 balanças conectadas neles aqui da empresa.

DESDE JA AGRADEÇO A AJUDA!!!

T

Você está confundindo o que se pode fazer no servidor com o que se pode fazer no cliente. Se você precisa chamar o programa “peso.exe” na máquina local do cliente, você não pode fazer isso diretamente a partir de uma página web. Há duas formas de fazer isso:

  • Pedir ao usuário que clique em um shortcut na máquina dele que chame esse programa (é mais garantido, mais fácil e funciona direitinho);
  • Criar uma applet assinada que chame esse programa.

Por acaso esse programa peso.exe precisa mandar algum parâmetro de volta para sua aplicação? O que ele faz? Se precisa mandar alguma coisa de volta para sua aplicação, você teria de fazer uma de duas coisas:

  • Modificar peso.exe de forma que se comunique com uma página de sua aplicação;
  • ou, na sua applet assinada, chamar o programa, e obter o resultado (nem sei como, porque não sei como funciona seu programa “peso.exe”).

O que não dá para fazer é o servidor magicamente chamar um programa remotamente no cliente, de maneira simples.

P

Bem a aplicação é a seguinte… Um siteminha que roda em 4 talvez5 maquinas que cadastra entra e saidas de caminhão da empresa… Para definir o horario dos msm dentro da empresa e os pesos de saida deles!!!

Nós tentamos de tds as formas capturar a porta serial em java… Mas infelizmente não conseguimos nada e perdemos muito tempo!!! Dado que o sistema esta td em JAVA na WEB criamos o peso.exe que nada mais é que: Busca na porta serial da maquina o valor que a balança esta, mas iso deve ser feito apenas qdo o usuario pede… colocamos um botão no aplicação web que chama este peso.exe e ele funciona normalmente no windows, mas em linux não funciona nem matando!!!

O peso.exe ja manda para uma pagina este peso e o usuario prenche os demais dados acessando os dados no meu BD…

Eu so queria executar o peso.exe como faço no windows, apenas clicando neste botão!!! ou então capturar o peso na serial atraves do proprio JAVA, mas ninguem que eu conheça conseguiu fazer isto efetivamente!!!

Desde Já agradeço!!!

D

ola pfusco
Nao sei se entendi direito, mas pelo que eu entendi vc esta querendo rodar uma aplicacao nativa do windows(exe) no linux, o que eu sei isso e impossivel naturalmente, a nao ser que vc use um emulador para emular o Windows no linux, ai pd ser que der certo, ou crie esta aplicacao (peso.exe) compativel com o linux, usando alguma linguagem compativel, que ao meu ver a mais facil seria o java mesmo. Programas exe do windows, usam a api Windows32 para rodar, onde estao todos comandos que o windows possui, para que as aplicacoes acessem recursos do SO, no linux a api e bem diferente, pois o SO e completamente diferente. Infelizmente nao sei muito do linux pra te ajudar neste ponto, mas o que seria mais facil seria vc tentar acessar essa porta serial pelo java mesmo, e é provavel, que se vc consiga acessar essa porta no windows e em java, pd ser que se vc rodar a mesma aplicacao no linux, nao funcione, mesmo sendo em java, devido que o acesso as portas do computador sao muito nativas, e cada SO possui uma particularidade, ai so testando pra ver.

V

Esqueça amigo, o que você quer é impossível.

Nenhuma aplicação Web vai apontar para um shortcut ou programa que se encontra localmente na estação de trabalho do usuário e conseguir executá-la… o browser não permite porquestões de segurança !
Se isso fosse possível, o que tinha de páginas mandando abrir programas e executar arquivos nas estações de trabalho dos usuários …

Se não for uma aplicação Web até que é possível, mas se for web esqueça !

P

vanjunior:
Esqueça amigo, o que você quer é impossível.

Nenhuma aplicação Web vai apontar para um shortcut ou programa que se encontra localmente na estação de trabalho do usuário e conseguir executá-la… o browser não permite porquestões de segurança !
Se isso fosse possível, o que tinha de páginas mandando abrir programas e executar arquivos nas estações de trabalho dos usuários …

Se não for uma aplicação Web até que é possível, mas se for web esqueça !

se e doido veio??? ninguém falo q era para WEB e este tópico ja esta morto a anos

amigo tente responder aos tópicos recentes nao fique desenterrando tópicos mortos nem falando merda neles

V

Falando merda ?, me respeita moleque !

Você é um moleque !

Z

vanjunior:
Falando merda ?, me respeita moleque !

Você é um moleque !

:shock:

Criado 8 de maio de 2007
Ultima resposta 30 de abr. de 2008
Respostas 16
Participantes 9