|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
[Java]Errore a runtime che non capisco
Ho scritto questo pezzo di codice che mi richiama un EXE che si trova nella stessa cartella del sorgente:
public class Miomidchord { public static void main(String[]args) { String comando="midchord -half -fmt prova.mid prova2.mid"; runShell(comando); System.out.println("sono tornato dal metodo"); } public static boolean runShell ( String exe ) { try { System.out.println("sono entrato nel metodo"); Runtime rt = Runtime.getRuntime(); System.out.println(exe); Runtime.getRuntime().exec("midchord -half -fmt prova.mid prova2.mid" ); System.out.println("eseguito exec"); System.out.println("Finito " + exe); } catch(Exception e) { e.printStackTrace(); return false; } return true; } } Il compilatore non da errori ma quando lo eseguo mi da l'errore che allego, intanto il programma termina "correttamente" (non esegue però l'EXE di cui prima). Mi potete aiutare? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
ntvdm.exe è la Windows 16-bit Virtual Machine...quel programma è un vecchio programma DOS? Potrebbe semplicemente non essere compatibile con Windows...
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
Si, è un porgramma per DOS ma se lo faccio partire da START->ESEGUI funziona correttamente....
Forse ho sbagliato qualcosa ne l codice ? |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Re: [Java]Errore a runtime che non capisco
prova:
Codice:
Runtime.getRuntime().exec("cmd /c start midchord -half -fmt prova.mid prova2.mid" ); |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
GRAZIE!!
a cosa server /c ??? Ora devo solo trovare il sistema di scandire il contenuto di una directory per memorizzare in una stringa i nomi dei files midi. Ultima modifica di Marco2000 : 06-04-2004 alle 13:01. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
Dunque, ho visto che quello che mi nteressa si trova su java.io.* solo che trovo riferimento per linux e non per windows....
mi sapete dire come potrei realizzare qualcosa del tipo: String nomefile; while(nella cartella c'è un file .mid) { nomefile=il nome del file; } |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
a chiudere il prompt di msdos quando finisce il prgramma che lanci ![]() |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
Codice:
File dir = new File("tua directory"); String[] lista = dir.list(); if (lista != null) for (int i=0; i<lista.length; i++) { String nomefile = lista[i]; } |
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
Grazie, fin qui c'ero arrivato anche io solo che in listai] c'è il percorso assoluto mentre io vorrei solo il nome del file con l'estenzione ma senza il path.
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
Ho risolto con substring() però ho un altro problema e questo non so se sarà possibile risolverlo....
il programma DOS che richiamo carica senza problema qualsiasi file con nome più lungo anche di 8 caratteri ma non me lo risalva. Se invece gli dico di salvare con un nome breve ce la fa.... Questo è risolvibile? |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
Codice:
File[] files = dir.listFiles(); for(ecc.ecc) String file = files[i].getName(); |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
Grazie mille!!!
Altro problema: se faccio partire molte istanze(ne ho provate 250) di cmd mi intasa il pc, il problema sicuramente è qui: public static boolean runShell ( String exe ) { try { Runtime rt = Runtime.getRuntime(); Runtime.getRuntime().exec(exe); } catch(Exception e) { e.printStackTrace(); return false; } return true; } C'è un comando, da mettere dopo la exec(exe), che aspetti l'esecuzione della cmd prima di passare alla successiva ??? |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Codice:
public static boolean runShell ( String exe ) { try { Runtime rt = Runtime.getRuntime(); //togli questa riga che non ti serve Process p = Runtime.getRuntime().exec(exe); p.waitFor(); } catch(Exception e) { e.printStackTrace(); return false; } return true; } |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
Grazie mille, l'avevo trovato ora ora su un sito ma mi dice anche di fare questo:
p.getInputStream().close(); p.getOutputStream().close(); p.getErrorStream().close(); serve ? |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
[EDIT
|
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
Quote:
|
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Quote:
|
|
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
penso di no, lo dovrebbe fare in automatico |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Aug 2002
Città: ...diciamo Pisa
Messaggi: 1282
|
Si, funziona!!
Il mio problema è che siamo su windows, se ero su linux facevo un programmino in C con sleep,waitpid e cose varie ma qui non sapevo come muovermi !!!!! Grazie ancora |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:02.