| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  06-04-2004, 10:06 | #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? | 
|   |   | 
|  06-04-2004, 10:29 | #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...
		 | 
|   |   | 
|  06-04-2004, 13:44 | #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 ? | 
|   |   | 
|  06-04-2004, 13:49 | #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" ); | 
|   |   | 
|  06-04-2004, 13:52 | #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 14:01. | 
|   |   | 
|  06-04-2004, 14:17 | #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; } | 
|   |   | 
|  06-04-2004, 14:26 | #7 | |
| Senior Member Iscritto dal: Jan 2001 Città: Milano 
					Messaggi: 5707
				 | Quote: 
 a chiudere il prompt di msdos quando finisce il prgramma che lanci   | |
|   |   | 
|  06-04-2004, 14:30 | #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];
        } | |
|   |   | 
|  06-04-2004, 14:36 | #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.
		 | 
|   |   | 
|  06-04-2004, 15:14 | #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? | 
|   |   | 
|  06-04-2004, 15:39 | #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(); | |
|   |   | 
|  06-04-2004, 15:40 | #12 | |
| Senior Member Iscritto dal: Jan 2001 Città: Milano 
					Messaggi: 5707
				 | Quote: 
   | |
|   |   | 
|  06-04-2004, 15:43 | #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 ??? | 
|   |   | 
|  06-04-2004, 15:49 | #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;
} | 
|   |   | 
|  06-04-2004, 15:50 | #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 ? | 
|   |   | 
|  06-04-2004, 15:50 | #16 | 
| Senior Member Iscritto dal: Jul 1999 Città: Torino 
					Messaggi: 2221
				 | 
		[EDIT 
		 | 
|   |   | 
|  06-04-2004, 15:51 | #17 | |
| Senior Member Iscritto dal: Aug 2002 Città: ...diciamo Pisa 
					Messaggi: 1282
				 | Quote: 
 | |
|   |   | 
|  06-04-2004, 15:53 | #18 | |
| Senior Member Iscritto dal: Jul 1999 Città: Torino 
					Messaggi: 2221
				 | Quote: 
 | |
|   |   | 
|  06-04-2004, 15:53 | #19 | |
| Senior Member Iscritto dal: Jan 2001 Città: Milano 
					Messaggi: 5707
				 | Quote: 
 penso di no, lo dovrebbe fare in automatico | |
|   |   | 
|  06-04-2004, 15:57 | #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: 16:07.









 
		 
		 
		 
		








 
  
 



 
                        
                        










