Java >> Tutoriel Java >  >> Java

Exemple Java ProcessBuilder pour lancer un fichier bat avec des arguments

La plupart des infrastructures d'automatisation des tests doivent exécuter un fichier de commandes ou des programmes externes. Comme ils doivent effectuer des tâches liées au système telles que les changements de date et d'heure, copier des fichiers/dossiers et d'autres éléments liés au système de fichiers. Dans ce didacticiel Java, nous avons pensé à proposer un exemple de code pour démontrer l'exécution de fichiers batch à l'aide de la classe Java ProcessBuilder. C'est notre tentative de vous familiariser avec le concept de Java ProcessBuilder afin que vous puissiez l'utiliser lors du développement logiciel de vos projets.

Dans la section suivante, vous pouvez extraire le code Java pour exécuter le fichier batch. Cet exemple de code peut facilement s'intégrer à n'importe quel framework de test utilisant Java. Cependant, vous pouvez également créer un nouveau projet Java dans lequel vous pouvez intégrer le code donné. Vous pouvez ensuite créer et exporter le projet en tant que fichier Jar. Jar est un format universel pris en charge sur presque toutes les plateformes. Vous pouvez également l'exécuter à partir de la ligne de commande.

Juste pour votre information, si vous souhaitez en savoir plus sur le concept Java JNA. Veuillez consulter le billet de blog suivant sur le concept Java JNA.

💡 Apprenez à utiliser le concept Java JNA par exemple

L'extrait de code Java intégré ci-dessous fournit les fonctionnalités suivantes.

Exemple Java ProcessBuilder – Description

  • Cet extrait de code peut également être utilisé pour exécuter n'importe quel programme exécutable en dehors du fichier batch.
  • Il permet de passer des arguments au programme cible séparés par des espaces.
  • Le programme attend la fin de l'exécution du fichier batch ou du programme cible.
  • Lit le tampon de sortie d'exécution dans un thread d'arrière-plan pour éviter tout scénario de blocage.
  • Affiche la sortie du programme une fois l'exécution terminée.
  • Dans ce code, nous avons utilisé la classe interne anonyme Java pour lancer le thread de lecture de sortie.
  • Nous avons testé avec succès le code sur la plate-forme Windows, mais il fonctionnera de la même manière sur Linux et Mac OS X.

Exécutez le programme Java à partir de la ligne de commande.

Il existe deux façons d'exécuter un programme Java à partir de la console.

1) Vous pouvez exporter votre projet Java sous forme de fichier Jar. Utilisez ensuite la commande suivante pour l'exécuter.

💡 java -jar  

2) Si vous souhaitez simplement exécuter une classe Java à partir de la ligne de commande, utilisez la commande ci-dessous pour exécuter et transmettre des arguments.

💡 java -cp

Extrait de code Java ProcessBuilder

package com.techbeamers.processbuilderdemo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * Java ProcessBuilder Demo
 */
public class ProcessBuilderDemo {
	public static void main(String[] args) throws IOException {
		// This code demonstrate using Java ProcessBuilder class to run a batch
		// file
		// Java ProcessBuilder and BufferedReader classes are used to implement
		// this.
		System.out.println(" ");
		System.out.println("==========Arguments Passed From Command line===========");
		for (String s : args) {
			// Iterate through String array in Java (args list)
			System.out.println(s);
		}
		System.out.println("============================");
		System.out.println(" ");
		final StringBuffer sb = new StringBuffer();
		int processComplete = -1;
		ProcessBuilder pb = new ProcessBuilder(args);
		pb.redirectErrorStream(true);
		try {
			final Process process = pb.start();
			final InputStream is = process.getInputStream();
			// the background thread watches the output from the process
			new Thread(new Runnable() {
				public void run() {
					try {
						BufferedReader reader = new BufferedReader(
								new InputStreamReader(is));
						String line;
						while ((line = reader.readLine()) != null) {
							sb.append(line).append('\n');
						}
					} catch (IOException e) {
						System.out
								.println("Java ProcessBuilder: IOException occured.");
						e.printStackTrace();
					} finally {
						try {
							is.close();
						} catch (IOException e) {
							e.printStackTrace();
						}
					}
				}
			}).start();
			// Wait to get exit value
			// the outer thread waits for the process to finish
			processComplete = process.waitFor();
			System.out.println("Java ProcessBuilder result:" + processComplete);
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("Java ProcessBuilder - return=: " + sb.toString());
	}
}

Exemple Java ProcessBuilder – Conclusion

Avant de conclure ce didacticiel, nous souhaitons simplement remercier tout particulièrement nos lecteurs. Nous souhaitons que ce tutoriel vous soit très utile. Au cas où vous auriez une autre approche pour exécuter un fichier de commandes ou un programme externe avec des arguments. Merci de nous en faire part.

Et si vous avez aimé cet article, partagez-le avec d'autres ou sur les plateformes de médias sociaux que vous aimez. Vos retours sont toujours les bienvenus et précieux pour nous permettre de faire mieux la prochaine fois. Vous êtes donc invité à placer vos réflexions dans la section des commentaires juste en dessous du message.

Tout le meilleur,

TechBeamers


Balise Java