2017-02-23 2 views
0

J'ai un projet qui utilise ProcessBuilder pour capturer la sortie de la commande "java -jar someJar.jar -argument", mais qui a maintenant déplacé les fichiers source du fichier jar dans un paquet séparé; un paquet. Le paquet a une fonction principale, donc je voudrais créer un ProcessBuilder qui capture la sortie de ce processus, comme s'il s'agissait d'un Thread différent.Utiliser ProcessBuilder pour capturer la sortie du package séparé

Est-ce possible, ou devrais-je réécrire complètement le code pour lui permettre d'utiliser les fichiers source au lieu du binaire?

+0

Vous confondez les termes d'une manière confuse. Que voulez-vous dire par "ont maintenant déplacé les fichiers source du pot dans un paquet séparé"? Et pourquoi cela suscite-t-il le désir d'exécuter des "fichiers source au lieu du binaire" (ce qui est, bien sûr, impossible sans les compiler)? – Holger

Répondre

0

Si je suppose que oui, le paquet a la fonction principale et nous essayons d'obtenir la sortie de la méthode principale qui s'exécute avec la commande java -jar processbuilder.

ProcessBuilder pb = new ProcessBuilder(your java -jar command);  
Process process = pb .start(); 
process.waitFor(); 
BufferedInputStream in = new BufferedInputStream(process.getInputStream()); 
byte[] contents = new byte[1024]; 
int jwtOytputBytesRead = 0; 
String Output = ""; 
while ((jwtOytputBytesRead = in.read(contents)) != -1) { 
      Output += new String(contents, 0, jwtOytputBytesRead); 
    } 
System.out.println(Output); 

Essayez ce lien et préciser la principale la classe Run class in Jar file

+0

Oui, c'est ce que j'essaie de faire, mais il doit être threadé, parce que je dois constamment obtenir la sortie de celui-ci. –

+0

que diriez-vous de Essayer appelable dans java. Exemple: public class ProcessBuilderProcessor implémente Callable {} Utilisez ensuite l'exécuteur \t \t ProcessBuilderProcessor pbp = new ProcessBuilderProcessor (""); \t \t ExecutorService executr = Executors.newFixedThreadPool (1); \t \t Futur future1 = executr.submit (pbp); – HaroonIsmailbasha