2016-10-27 1 views
1

J'ai un code C que j'ai compilé et ajouté au chemin afin de pouvoir l'exécuter forme partout (je l'ai, je peux revérifié que faire)Exécuter commande shell de Java dans le dossier spécifique

Maintenant, je veux faire une interface graphique pour travailler avec elle d'une manière plus facile. Je demande à l'utilisateur d'entrer un fichier et un répertoire de sortie.

Dans un bouton cliquable je placer le code pour exécuter la commande à partir de l'interface graphique:

String command = "myprogram -e " + file; 
new ExecuteShellInstruction().main(command,jTextOutputDirectory.getText()); 

J'exécutons le code autre classe:

p = Runtime.getRuntime().exec(command, null, new File(directory)); 

Mais je reçois toujours cette erreur:

java.io.IOException: Cannot run program "myprogram" (in directory "/Users/user_name/Documents/folder/example"): error=2, No such file or directory 

J'ai vérifié que si j'écris exactement la même chose du même dossier il n'y a aucun problème.

Une idée de ce que je fais porté ?, Si obtenu cette façon de le faire à partir d'une question qui a été marquée comme correcte, peut-être qu'il me manque quelque chose, mais j'ai déjà essayé 1 heure et rien semble fonctionner.

Merci!

+0

son indiquant clairement son pas en mesure de localiser le fichier dans le répertoire de travail actuel –

+0

@ShreyasSarvothama oui, il le dit. Mais comme je l'ai mentionné quand je le fais directement dans ce répertoire à partir du shell, il fonctionne parfaitement .. – nck

+0

mais où travaillez-vous votre code java de .. définir le répertoire d'abord, puis exécutez-le .. shell répertoire par défaut est différent et Le répertoire de travail de Java est différent –

Répondre

1

Finalement, j'ai trouvé une solution. Il semble que vous ayez à dire que votre application peut être exécutée en ajoutant "./" au début. Quelque chose comme ceci:

String command = "./myprogram -e " + file; 
+0

Utilisez la surcharge qui accepte un 'String []', sinon vous ne pourrez pas traiter les noms de fichiers avec des espaces. –

+0

Merci, pourriez-vous préciser où exactement? Chaîne [] commande? – nck

+0

@nck: Voir ['Runtime''] (https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html); considérez également 'ProcessBuilder', montré [ici] (http://stackoverflow.com/a/20603012/230513). – trashgod