Se connecter avec
S'enregistrer | Connectez-vous

[Résolu][Java] Exécuter une application externe en Java

Dernière réponse : dans Programmation

Bonjour à tous,

nous travaillons actuellement sur un projet ou nous devons utiliser des scripts externes et récupérer leur résultat dans un petit programme java.
Nous avons utilisé le code : http://ydisanto.developpez.com/tutoriels/j2se/runtime/#....

Nous avons bien sur modifié le programme par ls ou encore /bin/ls mais toujours la même erreur.

Lorsque on l'utilise dans eclipse dans un petit programme vide dans la methode main, nous avons une erreur que nous ne comprenons pas: # guarantee(_name_index != 0 && _signature_index != 0) failed: bad constant pool index for fieldDescriptor


Si quelqu'un pouvais nous aider sa serait sympa,
merci
Lassé par la pub ? Créez un compte
Expert Programmation

Erreur de choix de langage (ton projet me semble plus adapté avec le python), mais passons. :) 

Pour l'erreur, il semblerait que c'est un problème avec le byte code, alors il faudrait installer les dernières versions et recompiler les classes (à exécuter sur une JVM de même version).

Ce projet est un projet mobile sous android, alors notre choix s'est vite porté sur java.

Voici donc mon code :


  1. package com.android.sniffer;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6.  
  7. public class commande {
  8.  
  9. public static void main (String []args) throws IOException
  10. {
  11.  
  12. final Process process = Runtime.getRuntime().exec("/bin/pwd");
  13.  
  14. // Consommation de la sortie standard de l'application externe dans un Thread separe
  15. new Thread() {
  16. public void run() {
  17. try {
  18. BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
  19. String line = "";
  20. try {
  21. while((line = reader.readLine()) != null) {
  22. // Traitement du flux de sortie de l'application si besoin est
  23. System.out.println(line);
  24. }
  25. } finally {
  26. reader.close();
  27. }
  28. } catch(IOException ioe) {
  29. ioe.printStackTrace();
  30. }
  31. }
  32. }.start();
  33.  
  34. // Consommation de la sortie d'erreur de l'application externe dans un Thread separe
  35. new Thread() {
  36. public void run() {
  37. try {
  38. BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
  39. String line = "";
  40. try {
  41. while((line = reader.readLine()) != null) {
  42. // Traitement du flux d'erreur de l'application si besoin est
  43. System.out.println("erreur:"+ line);
  44.  
  45. }
  46. } finally {
  47. reader.close();
  48. }
  49. } catch(IOException ioe) {
  50. ioe.printStackTrace();
  51. }
  52. }
  53. }.start();
  54.  
  55.  
  56.  
  57. }
  58.  
  59. }



Oui, ce n'est pas le code qui a un problème car quand je l'exécute sur ubuntu, sa passe impeccable. Mais sur mac os sa marche pas avec eclipse. Je vais donc développer sur ubuntu. Merci pour vos réponses.

PS : Si vous avez des solutions pour mettre à jour le jdk sur mac os, je suis prenneur
Lassé par la pub ? Créez un compte
Tom's guide dans le monde