Exemple d'utilisation de la classe runtime

Description

Cette source présente deux exemples qui illustrent l'utilisation de la classe Runtime
- Une classe Ping qui permet de lancer une commande ping à l'aide de Runtime
- Une classe LancementJava qui permet de lancer un programme java à l'aide de Runtime

Elle contient également une classe RecuperationSorties qui permet de rediriger un flux vers la console dans un thread distinct du thread courant.

Source / Exemple :


Code permettant de lancer une commande dos :
import java.io.IOException; 

/**
 * <b>Ping est la classe qui permet de lancer un ping sur une machine</b>
 * <p>
 * Cette classe contient une méthode ping qui réalise un ping sur la machine dont l'ip est passée en paramètre
 * </p>
 * <p>
 * Cet exemple permet de vérifier si on peut joindre une machine grâce à un ping.  
 * La méthode ping permet de réaliser le ping sur une machine passée en parametre en  
 * utilisant la classe Runtime.  
 * </p>
 */
public class Ping {

	/**
	 * Cette méhthode permet de réaliser un ping sur la machine dont l'ip est passée en paramètre
	 * @param nomMachine
	 * 	L'adresse ip ou le nom de la machine à pinger
	 * @return vrai si la machine est joignable par le ping et faux sinon
	 */
	public boolean ping(String nomMachine){
		int exitValue=1;
		
		/* Récupération de l'environnement d'exécution */
		Runtime runtime = Runtime.getRuntime();
		
		try {
			/* Création et lancement de processus qui fait le ping */
			Process process = runtime.exec("cmd /c "+"ping "+nomMachine);
			
			/* Lancement du thread de récupération de la sortie standard */
			new RecuperationSorties(process.getInputStream()).start();
			
			/* Lancement du thread de récupération de la sortie en erreur */
			new RecuperationSorties(process.getErrorStream()).start();
			
			/* On enregistre le code retour */
			exitValue=process.waitFor();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
		catch (InterruptedException e) {
			e.printStackTrace();
		}
		return exitValue==0;
	}
	
	public static void main(String[] args){
		Ping exemple = new Ping();
		boolean trouve=exemple.ping("localhost");
		System.out.println(trouve);
	}
} 


Code permettant de récupérer un flux de sortie :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * <b>
 * RecuperationSorties est la classe qui permet de récupérer   
 * les sorties d'une commande lancée avec Runtime et de les   
 * rediriger vers la console  
 * </b>  
 * <p>  
 * Cette classe est caractérisée par les informations suivantes :  
 * <ul>  
 * <li>Le flux à rediriger</li>  
 * </ul>  
 * </p>  
 * <p>  
 * Cette classe définit un thread, on peut lancer la récupération  
 * avec la méthode start().  
 * </p>  
 *   
 * @author Julien  
 * @version 1.0   
 */
public class RecuperationSorties extends Thread {  

	/**  Le flux à rediriger  */
	private InputStream flux;

	/**
	 * <b>Constructeur de RecuperationSorties</b>
	 * @param flux
	 *  Le flux à rediriger
	 */
	public RecuperationSorties(InputStream flux){
		this.flux = flux;
	}
	
	@Override
	public void run(){
		try {    
			InputStreamReader reader = new InputStreamReader(flux);
			BufferedReader br = new BufferedReader(reader);
			String ligne=null;
			while ( (ligne = br.readLine()) != null){
				System.out.println(ligne);
			}
		}
		catch (IOException ioe){
			ioe.printStackTrace();
		}
	}
} 


Exemple de lancement d'un java
import java.io.IOException;
/*
 * Cette classe montre comment lancer un programme java dans un programme java. 
 * Pour cela, on utilise la classe Runtime pour exécuter une commande windows
 */ 
public class LancementJava {

	private static final String dossierInstallation = "C:\\Program Files\\Java\\jre6";  
	
	public void lancerJava(String urlJarExecutable){
		
		/* Récupération de l'environnement d'exécution */  
		Runtime runtime = Runtime.getRuntime();
		
		try {
			/* Création et lancement de processus qui lance le java */  
			Process process = runtime.exec('"'+dossierInstallation+"\\bin\\java.exe" + '"' + " -jar " + '"' + urlJarExecutable + '"');
			
			/* Lancement du thread de récupération de la sortie standard */
			new RecuperationSorties(process.getInputStream()).start();
			
			/* Lancement du thread de récupération de la sortie en erreur */
			new RecuperationSorties(process.getErrorStream()).start();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args){ 
		LancementJava exemple = new LancementJava();  
		exemple.lancerJava("C:\\Documents and Settings\\Julien\\Bureau\\Essai.jar");
	}

} 

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.