[JSP ] 請教有關Runtime.exec錯誤的問題
我想寫一個網頁 然後放在windows架的apache上
藉這個jsp網頁去執行cluster程式 然後產生一些資料
再用網頁去抓那些資料回來
目前我的想法是
寫一個1.bat檔內容是
@echo off
putty.exe -ssh xxx.xxx.xxx.xxx -l ptt -pw "ptt" -m linuxcmd.cmd
linuxcmd.cmd內容是
sync
cd mix1/
./testBash.sh
testBash.sh內容是
#!/bin/bash
/cluster/opt/mpich2/bin/mpdboot -n 8 -f mpd2.hosts
/cluster/opt/mpich2/bin/mpiexec -n 8 ./ok_MPI_GME_PBF.o
連結到cluster linux上去下指令
下一些執行的語法 等執行完會產生一些資料
再用網頁抓資料回來
但是目前把bat放到apache上
網頁的內容是
<%@ page contentType="text/html; charset=big5"
pageEncoding="Big5" language="java" import="java.sql.*,
java.util.Date, java.io.* , java.lang.Runtime.*" errorPage="" %>
<html><head><title>Insert title here</title></head><body>
<%
Runtime o_run_notepad = Runtime.getRuntime();
o_run_notepad.exec("1.bat");
%>
</body></html>
開啟網頁後會跳一個錯誤訊息
java.io.IOException: Cannot run program "1.bat": CreateProcess error=2
我在猜這個訊息是不是說我不能在遠端的windows上建立process去執行?
如果我在我自己電腦上直接執行1.bat確定可以完整產生檔案
但是把這幾個檔案放在網路遠端 然後用網頁去呼叫執行就會錯
請問我該怎麼修改才可以讓使用者利用網頁就可以跑這個程式
不用把那些檔案下載到自己端再執行
麻煩會的大大幫我解答一下 真的很感謝
***************************************************************
第一次try自己電腦上執行bat
目前我是先試在自己電腦上執行1.bat檔
已確定可以連到cluster下指令執行平行程式
也確定有跑完 產生檔案
第二次try利用網頁執行本機端bat
再試驗利用網頁的方式去執行本機端的1.bat
當檔案在自己電腦上時 確定可以正常跑完所有的指令
第三次try利用網頁執行遠端的bat檔(絕對路徑)
但是把那些檔案放在server端時
再用網頁方式去執行就會跳
type Exception report
message
description The server encountered an internal error () that prevented
it from fulfilling this request.
exception
org.apache.jasper.JasperException: Exception in JSP: /jsp_test/a/1.jsp:13
10: <%
11: Runtime o_run_notepad = Runtime.getRuntime();
12:
13: o_run_notepad.exec("http://xxx.xxx.xxx.xxx/jsp_test/a/1.bat");
14:
15: %>
16:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(
JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:361)
org.apache.jasper.servlet.JspServlet.serviceJspFile(
JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(
JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.io.IOException: Cannot run program
"http://xxx.xxx.xxx.xxx/jsp_test/a/1.bat": CreateProcess error=2,
‥t2Χ?‥i?uc
java.lang.ProcessBuilder.start(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
org.apache.jsp.jsp_005ftest.a._1_jsp._jspService(_1_jsp.java:58)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(Js
pServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.io.IOException: CreateProcess error=2, ‥t2Χ?‥i?uc
java.lang.ProcessImpl.create(Native Method)
java.lang.ProcessImpl.<init>(Unknown Source)
java.lang.ProcessImpl.start(Unknown Source)
java.lang.ProcessBuilder.start(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
org.apache.jsp.jsp_005ftest.a._1_jsp._jspService(_1_jsp.java:58)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(
JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in
the Apache Tomcat/5.5.26 logs.
這個錯誤
第四次try相對路徑
org.apache.jasper.JasperException: Exception in JSP: /jsp_test/a/11.jsp:13
10: <%
11: Runtime o_run_notepad = Runtime.getRuntime();
12:
13: o_run_notepad.exec("1.bat");
14:
15: %>
16:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(
JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:361)
org.apache.jasper.servlet.JspServlet.serviceJspFile(
JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.io.IOException: Cannot run program "1.bat":
CreateProcess error=2, ‥t2Χ?‥i?uc
java.lang.ProcessBuilder.start(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
org.apache.jsp.jsp_005ftest.a._11_jsp._jspService(_11_jsp.java:58)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(
JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.io.IOException: CreateProcess error=2, ‥t2Χ?‥i?uc
java.lang.ProcessImpl.create(Native Method)
java.lang.ProcessImpl.<init>(Unknown Source)
java.lang.ProcessImpl.start(Unknown Source)
java.lang.ProcessBuilder.start(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
java.lang.Runtime.exec(Unknown Source)
org.apache.jsp.jsp_005ftest.a._11_jsp._jspService(_11_jsp.java:58)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(
JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.124.44.24
※ 編輯: smallma009 來自: 140.124.44.24 (03/02 13:26)
※ 編輯: smallma009 來自: 140.124.44.24 (03/03 17:52)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 3 篇):