Bonjour
Je travaille sur netbeans 711 sous Windows.
J’ai déjà réalisé des applications sous java mais je n’ai jamais importé de bibliothèques externes.
Je souhaite à partir d’une interface graphique proposer de lancer le jeu FPS freeware http://www.enemy-territory.fr/
Ce jeu peut être lancé en ligne de commande avec des paramètres intéressants pour le joueur mais qui sont compliqués à mettre en œuvre pour un utilisateur moyen. Cette interface pourrait lui simplifier le lancement du jeu.
Pour ce faire, j’ai lu la doc http://ydisanto.developpez.com/tutor.../runtime-exec/ et donc essayé la classe Runtime puis ProcessBuilder.
Dans les deux cas je suis obligé d’utiliser :
String[] args = { "cmd.exe", "/c", Chemin de l’appli avec ses paramètres };
Car le jeu sous Windows Seven a besoin d’être lancé en administrateur, et il semble que la seule manière d’y arriver est de passer par "cmd.exe".
Si je lance la commande sans passer de paramètres le jeu s’ouvre correctement :
Si je lance la commande en passant des paramètres le jeu ne se lance pas, pas de message d’erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //lancement du jeu enemy territoy try { String chemin = "\"C:\\Program Files\\Wolfenstein - Enemy Territory\\et.exe\""; Process proc = Runtime.getRuntime().exec(new String[] {"cmd.exe", "/C", chemin}); } catch (IOException e) { //message en cas d'erreur JOptionPane.showMessageDialog(null,e,"Erreur",JOptionPane.ERROR_MESSAGE); }
Le résultat est le même avec la classe ProcessBuilder.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 try { String chemin1 = "\"C:\\Program Files\\Wolfenstein - Enemy Territory\\et.exe\""; String chemin2 = " +set fs_game nq + exec config.cfg +exec server.cfg"; String chemin = chemin1+chemin2; Process proc = Runtime.getRuntime().exec(new String[] {"cmd.exe", "/C", chemin}); } catch (IOException e) { //message en cas d'erreur JOptionPane.showMessageDialog(null,e,"Erreur",JOptionPane.ERROR_MESSAGE); }
D’après ce que j’ai lu dans le forum les classes Runtime puis ProcessBuilder ne sont pas des interpréteurs de ligne de commande, et donc ne sauraient pas gérer des passages de paramètres de type " +set fs_game nq + exec config.cfg +exec server.cfg"; sans doute à cause des symboles « plus »
Il est donc conseillé d’utiliser l’api Shell de Franck Martini http://blog.developpez.com/index.php...&c=1&tb=1&pb=1
Soit.
J’ai téléchargé l’api, et dans Netbeans j’ai procédé comme indiqué dans les forums et les tutos :
A la racine de mon projet j’ai créé un répertoire « bin » et j’y ai collé « Shell.jar »
Je suis allé dans outils/bibliothèque ajouter la nouvelle bibliothèque Shell à qui j’ai associé le fichier « Shell .jar » présent dans mon répertoire « lib ».
Dans les propriétés de mon projet j’ai ajouté la bibliothèque Shell. J’ai redémarré Netbeans.
Mais quand je veux importer la bibliothèque avec un
import shell.*;
J’ai un :
« package Shell does not exist ».
Merci de votre aide SVP!
Partager