首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • java调用外部程序时如何传参 [已结贴,结贴人:Ning_Hua]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-30 21:19:53 楼主
    请问,java调用外部程序是怎么传参数?谢谢……
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-30 21:30:151楼 得分:9
    外部程序?比如?
    如果是cmd 的话

    cmd /c  dir c:
    作为命令传过去

    notepad.exe  c:/t.txt
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-30 21:39:212楼 得分:5
    看看jni
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-31 11:18:363楼 得分:2
    不懂,学习……
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-31 14:20:564楼 得分:10
    Java code
    try { Process proc = Runtime.getRuntime().exec("***"); [b]int i = proc.waitFor();[/b] System.out.println(i); }catch(Exception e){ ... } ...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-31 22:34:205楼 得分:10
    String path = "C:/报表_20040504.xls";
      try {
      //相当于window的"开始"->"运行"的效果
        Runtime.getRuntime().exec("cmd /c start " + path);
      } catch (IOException e) {
        e.printStackTrace();
      }


    try ...{
          //just for window
          String[] command = new String[] ...{"cmd.exe", "/c",  "copy", filePath, "FSOBACK"};
          Process p = Runtime.getRuntime().exec(command);
          p.waitFor();
        }
        catch(Exception ex) ...{
          ex.printStackTrace();
        }
        Runtime.getRuntime().exec()中的参数,可是一个命令的字符串,如:"cmd.exe /c copy c:\\aaa.txt d:\bbb.txt"
        如果是执行一个单独的程序,不带参数,可以 "haha.exe",同样,执行带参数的命令不能直接写命令。而要把程序也写上,如cmd.exe

        如果有多个参数也可以写到一个数组中。要注意cmd.exe 与 /c 要当成两个参数来写,而不能写成:
        new String[] {"cmd.exe /c",  "copy", filePath, "FSOBACK"};

        Runtime执行时,被执行的程序相当于子进程。可以返回子进程Process对象
        p.waitFor()是指子进程执行完成后,再执行后面的程序。比如把文件copy到别处,再重写文件,如果不用waitFor(),不有可能文件还没有拷贝就已经更新了。拷贝的是更新过的文件。而不能达到备份的效果。


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-01 12:33:516楼 得分:3
    引用 4 楼 xiyuan1999 的回复:
    Java codetry{ 
      Process  proc=Runtime.getRuntime().exec("***"); 
      inti=proc.waitFor(); 
      System.out.println(i); 
      }catch(Exception  e){  ...  } 
      ...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-01 19:09:027楼 得分:3
    引用 5 楼 bobfallen 的回复:
    String path = "C:/报表_20040504.xls";
      try {
      //相当于window的"开始"->"运行"的效果
        Runtime.getRuntime().exec("cmd /c start " + path);
      } catch (IOException e) {
        e.printStackTrace();
      }


    try ...{
          //just for window
          String[] command = new String[] ...{"cmd.exe", "/c",  "copy", filePath, "FSOBACK"};
          Process p = Runtime.getRuntime().exec(command)…


    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-02 14:03:468楼 得分:0
    不行啊,我这里要传参的是通过java调用外部的一个报表,然后要从中传参,应该怎么做?谢谢!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lisl2003
    • 等级:
    发表于:2008-06-02 14:40:349楼 得分:1
    引用 8 楼 Ning_Hua 的回复:
    不行啊,我这里要传参的是通过java调用外部的一个报表,然后要从中传参,应该怎么做?谢谢!

    没听明白,谁指导一下?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-02 15:30:0610楼 得分:1
    我也顺便学习一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-02 16:59:2711楼 得分:5
    关键是看你的那个报表程序是怎么用cmd打开的,如果能通过命令行的方式,传参数给报表,那就runtime才能做到穿参
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-02 22:18:5212楼 得分:1
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-06-03 14:42:1613楼 得分:0
    引用 9 楼 lisl2003 的回复:
    引用 8 楼 Ning_Hua 的回复:
    不行啊,我这里要传参的是通过java调用外部的一个报表,然后要从中传参,应该怎么做?谢谢!

    没听明白,谁指导一下?

    意思就是,用java写的一个程序涉及到报表,而java自己没有什么好的报表,所以就从网上下载一个方便的报表,然后,java程序去调用它。
    现在已经实现了,逐步传参,就可以的。呵呵……谢谢啦!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved