2009-01-31 6 views
1

Je tente d'exécuter un script cgi (.cgi) avec tomcat. Je reçois l'erreur ci-dessous et ne peux pas savoir ce qui est mal. Je sais que je devrais vraiment utiliser apache et mod proxy, mais ce n'est vraiment pas mon domaine d'expertise, donc je prends le moyen facile!cgi et tomcat

Merci pour toute aide.

 
java.io.IOException: Cannot run program "perl" (in directory "C:\Java\tomcat\webapps\my_app_name\WEB-INF\cgi"): CreateProcess error=2, The system cannot find the file specified 
    java.lang.ProcessBuilder.start(ProcessBuilder.java:459) 
    java.lang.Runtime.exec(Runtime.java:593) 
    java.lang.Runtime.exec(Runtime.java:431) 
    org.apache.catalina.servlets.CGIServlet$CGIRunner.run(CGIServlet.java:1705) 
    org.apache.catalina.servlets.CGIServlet.doGet(CGIServlet.java:597) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:627) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738) 
    org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:416) 

Répondre

2

C'est quelque chose d'une supposition, mais vous pourriez avoir besoin d'ajouter ce qui suit à votre fichier web.xml de sorte que Tomcat peut trouver l'exécutable perl. Tomcat ne regarde pas dans votre PATH pour trouver executables, apparemment:

executable 
C:\perl\bin\perl 

Utilisez le chemin réel perl sur votre système, bien sûr.

0

L'erreur est indiquant que ne peut pas être trouvé l'exécutable nommé perl. Perl est-il installé sur votre système? Est-ce dans le chemin?

0

Aucun perl n'est pas installé. Le script CGI est en réalité C++. Je n'ai pas installé autre chose que l'installation par défaut de Tomcat.

1

Vous devez spécifier le paramètre « exécutable » dans l'élément de servlet. Selon le documentation, la valeur par défaut est "perl", ce qui est probablement ce qui déclenche votre erreur. Peut-être le changer à quelque chose comme cmd.exe fonctionnera.

0

Merci à tous, je na pas savoir quelle était la syntaxe correcte pour exécuter C++ scripts cgi, mais si vous laissez le champ vide param il fonctionnera tout type de script.

<init-param> 
    <param-name>executable</param-name> 
    <param-value></param-value> 
</init-param>