|
|||||||
|
|
|
![]() |
|
|
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 ), ma ad occhio se esegui "ulearn > output.out" potrebbe andare.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: 4423
|
...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: 4423
|
Quote:
...ciao... |
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
|
...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: 4423
|
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: 10:22.











), ma ad occhio se esegui "ulearn > output.out" potrebbe andare.









