|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 6
|
[Java] exec()
Salve a tutti,
ho un grosso problema con java, non riesco ad eseguire un programma esterno con la funzione exec(). posto il codice: public void training() throws IOException{ Process p=Runtime.getRuntime().exec("./RPCL/ulearn"); } molto semplice. Questa funzione viene richiamata da altro pezzo di codice che credo sia inutile trascrivere. il punto è che il file ulearn nella cartella RPCL viene visto dal metodo in quanto non genera errore. Solo che è come se non fosse partito. Infatti l'esecuzione del programma, da shell, deve generare un file di testo, che invece non genera. Se lo facio a mano, da shell digito ./RPCL/ulearn funziona e crea il file. Qualcuno sà aiutarmi, Grazie mille |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Sep 2007
Messaggi: 754
|
Che tipo di file è ulearn?
__________________
http://www.tevigroup.it/ |
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 6
|
è un file eseguibile ottenuto dalla compilazione del file ulearn.c , ho dimenticato di precisare che tutto ciò lo faccio su Linux Debian 2.6.21, e che il programma all'inizio funzionava, fino a quando un bel giorno(Lunedì) ha smesso per motivi che ignoro!!!
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
devi semplicemente gestire l'output così ad occhio..
Se provi ad eseguire un file e questo file scrive qualcosa sulla stdout e non redirezoni l'output con il metodo exec si incasina tutto e il programma si inceppa. Una soluzione completa la trovi con google (a quest'ora non mi va di goglare ![]() Se non va domani vedo di trovarti la procedura per gestire input e output da exec ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 6
|
non và, cmq volevo precisare anche che il programma ha un file di configurazione che deve leggere, non è che con exec() bisogna occuparsi anche degli input oltre che degli output?
|
![]() |
![]() |
![]() |
#6 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...un idea per controllare l'output e l'input...
Codice:
try { proc = Runtime.getRuntime().exec(iltuoprocesso); input = new BufferedReader(newInputStreamReader(proc.getInputStream())); output = proc.getOutputStream(); new Thread(){ public void run(){ String line; try { while((line = input.readLine()) != null){ System.out.println(line); } } catch(Exception e) { System.out.println(e); } } }.start(); } catch (IOException e) { e.printStackTrace(); } Codice:
private void SendCommand(String cmd){ try { if(proc != null){ output.write(cmd.getBytes()); output.flush(); } }catch(IOException e) { System.out.println(e); } } Codice:
Process child = Runtime.getRuntime().exec(ilmioporcesso); child.waitFor(); |
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 6
|
non và,
per provare a fare un debugging ho usato int p=Runtime.getRuntime().exec("./ulearn").exitValue(); per vedere se l'esecuzione và a buon fine. ebbene genera la seguente eccezzione va.lang.IllegalThreadStateException cosa può essere? |
![]() |
![]() |
![]() |
#8 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
...ciao... |
|
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...mh...non potrebbe essere un problema di locazione?...
Codice:
public void launchCommand(){ try{ File dir = new File ("."); String file = dir.getCanonicalPath(); System.out.println(file); Process child = Runtime.getRuntime().exec("./go.sh"); child.waitFor(); }catch (Exception e){ System.out.println(e); } } ...ciao... |
![]() |
![]() |
![]() |
#10 |
Junior Member
Iscritto dal: Oct 2007
Messaggi: 6
|
il path è guisto,
non sò proprio cosa possa essere a non farlo funzionare!!! |
![]() |
![]() |
![]() |
#11 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
Quote:
Codice:
#!/bin/sh cd $JAVA_HOME/lib/ext ./ulearn |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:32.