2010-03-07 32 views
0

J'utilise Java 1.6, Eclipse, Windows 7. J'essaie d'exécuter des commandes dans un programme Java pour utiliser NMAP.Problème avec Java Runtime.exec() lors de la tentative de démarrage de Nmap.exe

Le code:

String cmd[] = { "cmd.exe", "/c","start notepad.exe"};

Process pr = rt.exec(cmd);

fonctionne très bien, mais le code:

String cmd[] = { "cmd.exe", "/c","start nmap.exe"};

Process pr = rt.exec(cmd);

ne tout simplement pas.

J'ai essayé les deux commandes dans l'invite de commande, elles fonctionnent toutes les deux bien mais la dernière échoue quand je l'essaye avec le Runtime.exec(). Quel serait le problème ?

Merci à l'avance ..

Répondre

2

Peut-être "When Runtime.exec() won't" peut vous aider.

La raison pour laquelle la commande fonctionne dans un shell de commande et non dans Java peut être que le shell de commande a l'avantage de pouvoir se référer à la variable d'environnement PATH pour la trouver; Java ne peut pas. Je parie que si vous mettez le chemin complet vers Nmap.exe, vous serez mieux.

+0

Merci pour la réponse! J'ai lu cet article plusieurs fois mais je n'ai pas trouvé la réponse. Malheureusement, je pense que le problème ne concerne pas ces 4 pièges. Ce que je ne comprends pas, c'est pourquoi le même type de commande fonctionne avec un programme natif comme le bloc-notes et pas avec NMAP. Lorsque vous utilisez Runtime.exec(), Windows oublie simplement les informations sur NMAP. Je reçois une erreur indiquant que "Windows ne trouve pas 'nmap.exe'. Assurez-vous d'avoir tapé le nom correctement, puis réessayez". Mais la même commande fonctionne avec l'invite de commande. –

+0

"J'obtiens une erreur qui indique" Windows ne peut pas trouver 'nmap.exe'. "- Alors le problème est * clairement * que" nmap.exe "ne peut pas être trouvé sur le PATH que' cmd.exe' utilise quand exécuté via 'Process.exec (...)' .Utilisez le chemin d'accès complet pour 'nmap.exe' et cela devrait fonctionner –

+0

Travaillé comme un charme .. Merci beaucoup! –