Runtime rt=System.getRuntime();
Process pr=rt.exec("a.exe");
具体怎么写忘了

解决方案 »

  1.   

    请问 zhouhouqu(潇湘夜雨) ,你的代码是写在activex里的还是写在.jsp中?小妹是delphi菜鸟,请多多指教!我要调用的a.exe识别人写的,放在服务器上,用户要在客户机上使用。
      

  2.   

    public void TestCallC()
      {
        try{
          String command = "cmd.exe /c start c:/snort/bin/a.exe ";
          Process child = Runtime.getRuntime().exec(command);
        }
        catch(IOException e)
        {
             ;
        }
      }
      

  3.   

    你要调用服务器的exe,这个好像有点麻烦,如果是java写的,应该可以用rmi来实现,delphi写的也许有办法,但本人没研究过,呵呵
      

  4.   

    请教 ddadoris高手,能具体解释一下您的代码吗?放在哪?怎么用,使用activex吗?
    小妹学识浅薄,看不懂阿!
      

  5.   

    研究一下用delphi做ActiveX的方法吧。
    本地资源的访问要借助于ActiveX。
    先用Delphi做一个类,再通过ActiveX封装该类。最后发布ActiveX,并在网页内调用ActiveX.
      

  6.   

    方法写在javaBean里,在jsp里调用:)
      

  7.   

    a.class里是我上面的方法。
    在你的jsp里调用
    a.TestCallC()
    就可以了。
    把方法里的c:/snort/bin/a.exe 改成你的exe的路迳,c?
      

  8.   

    我还是没有成功,代码如下:直接在控制台输入
    cmd.exe /c start C:/resin/bin/httpd.exe
    可以运行<%@ page language="java"  contentType="text/html; charset=gb2312" %>
    <%@ page import="java.util.*,java.lang.*,java.io.*" %><% try{
          String command = "cmd.exe /c start C:/resin/bin/httpd.exe";
          Process child =Runtime.getRuntime().exec(command);
      out.print("OK");
        }
        catch(IOException e)
        {out.print(e.getMessage());
        }
    %>
    输出ok其他没什末反映,大家继续讨论,帮忙指点啊
      

  9.   

    个人认为应该把exe文件做成dll或ocx文件,通过jni调用dll或ocx文件中的函数
    可以到网上先找些jni的文档学习一下
      

  10.   

    程序是在服务器上执行的啊,客户机当然看不到东西了。
    又不象是servlet还返回给客户浏览器一个txt/html
      

  11.   

    我想问一下,
    1、是否先要在jbuilder里建立一个工程,编写一个bean,执行后产生.class,和.java文件,再用jsp调用呢?
    2、这个bean放在哪?和调用他的jsp文件的各自的目录应该怎么设置呢?
    还需要其他配置么?
    谢谢楼上的各位关注。
      

  12.   

    严重关注!!!
    lvchuanxi(小小^_^) 能给我一份吗?
      

  13.   

    TO  lvchuanxi(小小^_^) ,是要在客户端运行,怎么联系你?
      

  14.   

    请问,在jsp中怎么调用,具体的a.TestCallC()语法应该怎么写呢?
    我已经试了一天了,还是不行,郁闷阿!
    快疯掉了!
    我的想法是在网页上有个按纽或者类似链接的东东,点击即可打开delphi的a.exe程序,
    a.exe有自己的界面。
    我试了上面的方法,但是不行啊!
    我的bean文件是TestCallC.java:
    public class TestCallC {    public TestCallC()
         {
           try{
             String command = "cmd.exe /c start c:/Program Files/Apache Group/Tomcat 4.1/webapps/ROOT/jxyh/a.exe ";
             Process child = Runtime.getRuntime().exec(command);
               }
           catch(IOException e)
           {   ;
     }
         }
    }===========
    编译后有TestCallC.class文件:
    package test;public class TestCallC {  // Constructors
      public TestCallC() { }
    }
    ===========
    我的调用bean的jsp为
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%@ page import = "java.sql.*" %>
    <html>
    <head>
    .........
    <body bgcolor="DFE8FD" ><center>
    <jsp:useBean id='clock' scope='page' class='test.TestCallC' type="test.TestCallC" />
      <font color="#FF9933" size="6" face="隶书">优化检修票</font>
    </center>
    <form>
        <p><center><a href="a.exe" class="qx" size="+4"  face= "隶书">进入</a></center></p>
        <%=TestCallC.TestCallC()%>
      </center>
    </form>
    </body>
    </html>
    我的调用语句好像写的不对,可是该怎么写阿?!!
    我把TestCallC.class,TestCallC.java放在Tomcat 4.1\webapps\ROOT\WEB-INF\classes\test文件夹下呜呜。。
    该怎么办啊???
    求大家帮帮我吧!
      

  15.   

    不用写DLL吧,我原来用过记不清了,这句Runtime.getRuntime().exec(command)应该是对的
      

  16.   

    jsp里用
    <%@ page import = "test.TestCallC" %>然后
    <%
      TestCallC c = new TestCallC();
      
    %>删掉你的<jsp:useBean id='clock' scope='page' class='test.TestCallC' type="test.TestCallC" />另外不要把你的类名跟方法名写成一样,本来是用做构造器的,不知道会不会出问题,你先试试
      

  17.   

    to:ddadoris(马加爵) ,不行啊!我把TestCallC.java里的
    public class TestCallC {
        public TestCallC()
    改为
    public class TestCallC {
     public TestCallC() {
     }
     public  void TestCallC1()
    编译可以通过,
    .jsp里删掉那句话后,
    添加 <%@ page import = "test.TestCallC" %>
        <%  TestCallC c = new TestCallC();%>
        <%=TestCallC.TestCallC1()%>
    但在网页里还是出错,出错信息为:
    ====================
    Generated servlet error:
        [javac] Compiling 1 source fileC:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\_\jxyh\yhjx_jsp.java:87: non-static method TestCallC1() cannot be referenced from a static context
          out.print(TestCallC.TestCallC1());
                             ^
    An error occurred at line: 43 in the jsp file: /jxyh/yhjx.jspGenerated servlet error:
    C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\_\jxyh\yhjx_jsp.java:87: 'void' type not allowed here
          out.print(TestCallC.TestCallC1());
                                        ^
    2 errors
    ==================
    请问是怎么回事阿????
    我快郁闷死了,头都疼了!
      

  18.   

    <%=TestCallC.TestCallC1()%>
    改成
    <%c.TestCallC1();%>
      

  19.   

    我碰巧做过类似的东东。有两种情况
    1,你的优化程序在服务器上,只需要写个
    <form action="call.jsp"><input type="submit" name="优化">
    </form>
    然后把你的a.exe放在你服务器的环境变量path下面,(例如system32)
    call.jsp
    <%@ page language="java"%>
    <%
     Runtime r = Runtime.getRuntime() ;
     Process p = null ;
     
     try{
      p = r.exec("a.exe");
      p.waitFor();
     }catch(Exception e){
      System.out.println("exception e");
      }
    %>
    就可以了
    2,如果你的a.exe放在客户端,那么只好用applet的init()方法里放上
    Runtime r = Runtime.getRuntime() ;
     Process p = null ;
     
     try{
      p = r.exec("a.exe");
      p.waitFor();
     }catch(Exception e){
      System.out.println("exception e");
      }
    代码,然后把applet打包,做数字签名。如果你感兴趣,我可以再回答。
    不过我觉得,上面的代码回答你的问题就足够了。
      

  20.   

    to: ddadoris(马加爵) ,谢谢你
    不过我试了,不行啊!
    出错为
    --------------
    org.apache.jasper.JasperException: test.TestCallC.TestCallC1()V
    ..........
    javax.servlet.ServletException: test.TestCallC.TestCallC1()V-------------
    其中TestCallC为类名,TestCallC1为方法名。
    请指教。谢谢您了!
    to: srx(钻石史老三),我试了你的第一个方法,
    在path下添加a.exe,
    具体为path:%SystemRoot%\system32\a.exe
    并把a.exe考到了WINNT\system32下,
    点击链接call.jsp,该文件完全拷贝你上面给的代码;
    可是程序的进度条走到一半就不走了,没有任何反应。
    我想问你的
    <form action="call.jsp"><input type="submit" name="优化">
    </form>
    有用吗?放在哪?
    这种方式在客户端能调用并执行a.exe吗?对于第二种方法,能说得再详细写吗?我的目的是想把a.exe放到服务器上,但是在客户端可以调用并执行,整个程序的运行都在服务器上,客户端只是发出执行命令,输入数据,并能看到结果。多谢赐教!感激涕零!
      

  21.   

    to:ddadoris(马加爵) 
    全部文件如下;调用javabean的.jsp文件是yhjx.jsp
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%@ page import = "java.sql.*" %>
    <html>
    <head>
    <title>ww</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <%@ page contentType="text/html;charset=gb2312" %>
    <% request.setCharacterEncoding("GB2312");%> 
    </head>
    <script language="JavaScript">
    function reshow()
    {}
    </script>
    <body bgcolor="DFE8FD" >    <%@ page import = "test.TestCallC" %>
        <%  TestCallC c = new TestCallC();%>
        <%c.TestCallC1();%>
    </body>
    </html>在ROOT\WEB-INF\classes\test里的TestCallC.java和TestCallC.class
    分别如下:
    TestCallC.java内容如下:
    -----
    package test;import java.io.IOException;/**
     * <p>Title: </p>
     * <p>Description: </p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: </p>
     * @author not attributable
     * @version 1.0
     */public class TestCallC {
     public TestCallC() {
     }
     public  void TestCallC1()
         {
           try{
             String command = "cmd.exe /c start c:/Program Files/Apache Group/Tomcat 4.1/webapps/ROOT/jxyh/a.exe ";
             Process child = Runtime.getRuntime().exec(command);
               }
           catch(IOException e)
           {   ;
     }
    --------TestCallC.class文件内容如下
    ---------
    // JBuilder API Decompiler stub source generated from class file
    // 2004-3-23
    // -- implementation of methods is not availablepackage test;public class TestCallC {  // Constructors
      public TestCallC() { }  // Methods
      public void TestCallC1() { }
    }---------都在这了,请问过路的高手们,到底该怎么用啊?帮帮忙吧!
      

  22.   

    先写了一个,搂主凑合用吧。应用不太适合,但是解释原理足够了。
    callExe.jsp
    <%@ page language="java" import="CallExe;"%>
    <jsp:useBean id="mycall" class="CallExe" method="post"/><form action="callExe2.jsp" method="post">
    <input type="submit" name="s" value="优化">
    </form>
    <%
     if( request.getMethod().equalsIgnoreCase("post")){
       mycall.call();
      }
    %>CallExe.java
    public class CallExe{
     
     public void call(){
      Runtime r = Runtime.getRuntime() ;
      Process p = null ;
      try{
      p = r.exec("notepad");//修改为你的a.exe的绝对路径
      //p.waitFor() ; //注释她可以在记事本关闭前让浏览器完成
      }catch( Exception e ){
      System.out.println("exception when run notedpad.");
      }
     
     }//end call()
    }//:~
      

  23.   

    应用时写成Servlet最好不过了。
      

  24.   

    to:srx(钻石史老三) 
    先感谢您的帮忙!
    我有几点疑问:
    1、上面的方法是把a.exe放在服务器上还是客户端?如果放在服务器上,还用修改path吗?
    2、callExe2.jsp是哪个文件?起什么作用?
    3、CallExe.java里的p = r.exec("notepad");//修改为你的a.exe的绝对路径
    是把notepad定意成 
     String notepad = "cmd.exe /c start c:/Program Files/Apache Group/Tomcat4.1/webapps/ROOT/jxyh/a.exe "; 吗?
    4、System.out.println("exception when run notedpad.");
    中的notedpad是不是应该写成notepad?但notepad是字符串,这里是不是应该写成
    System.out.println("exception when run ‘notedpad’.");呢?
    请指教!万分感谢!
      

  25.   

    a.exe当然是放在服务器上了。
    notepad是一个可执行文件 = notepad.exe ,是windows自带的记事本程序。
    你执行后看到记事本打开了,就对了。
    =================================下面是你的问题:
    a.exe是否加到%path%里无所谓,如果不加,你可以写绝对路径那样调用。就象下面的
    代码:如果a.exe加到了环境变量%path%里,在bean里就直接写p = r.exec("a.exe");
    两者差不多。修改了一下:
    ---------------- callExe.jsp --------------------------
    <%@ page language="java" import="CallExe;"%>
    <jsp:useBean id="mycall" class="CallExe" method="post"/><form action="callExe.jsp" method="post">
    <input type="submit" name="s" value="优化">
    </form>
    <%
     if( request.getMethod().equalsIgnoreCase("post")){
       mycall.call();
      }
    %>----------- CallExe.java ---------------------
    public class CallExe{
     
     public void call(){
      Runtime r = Runtime.getRuntime() ;
      Process p = null ;
      try{
      p = r.exec("c:/a.exe");
      }catch( Exception e ){
      }
     
     }//end call()
    }//:~
      

  26.   

    to: srx(钻石史老三) 
    谢谢大侠,我按你的话作了,编译了 CallExe.java ,并生成 CallExe.class,将这两个文件放到ROOT\WEB-INF\classes\call 文件夹里,把callExe.jsp 放到ROOT里,但调用callExe.jsp 时出现错误如下:
    -------------
    org.apache.jasper.JasperException: /jxyh/callExe.jsp(40,0) UseBean: Invalid attribute, method--------------
    好像是没有找到方法,我以前测试jsp调用javabean时文件就是这么放的,不知是哪里错了?
    能帮帮我吗?
    谢谢