全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JAVA如何调用Shell脚本

在实际项目中,Java有时候需要调用C写出来的东西,除了JNI以外,我认为一种比较好的方法是JAVA调用Shell。先把C写出来的make成可执行文件,然后再写一个shell脚本执行该可执行文件,最后是JAVA调用该shell脚本。

JAVA调用很简单,例子如下:

首先是shell脚本

#!/bin/sh 
echo Begin word cluster 
/home/felven/word2vec/word2vec -train /home/felven/word2vec/resultbig.txt -output /home/felven/word2vec/classes.csv -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 2000 
echo The word classes were saved to file classes.csv 

然后是JAVA调用代码

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
 
public class RunShell { 
  public static void main(String[] args){ 
    try { 
      String shpath="/home/felven/word2vec/demo-classes.sh"; 
      Process ps = Runtime.getRuntime().exec(shpath); 
      ps.waitFor(); 
 
      BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream())); 
      StringBuffer sb = new StringBuffer(); 
      String line; 
      while ((line = brreadLine()) != null) { 
        sb.append(line).append("\n"); 
      } 
      String result = sbtoString(); 
      System.out.println(result); 
      }  
    catch (Exception e) { 
      e.printStackTrace(); 
      } 
  } 
} 

其实就是一个Process类进行调用,然后把shell的执行结果输出到控制台下。

需要注意的是,在调用时需要执行waitFor()函数,因为shell进程是JAVA进程的子进程,JAVA作为父进程需要等待子进程执行完毕。

另外在eclipse控制台输出时并不是边执行边输出,而是shell全部执行完毕后输出,所以如果执行较为复杂的shell脚本看到没有输出时可能会误以为没有执行,这个时候看看终端里面的进程,TOP命令一下就能看到其实shell脚本已经开始执行了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# JAVA调用Shell脚本  # Java调用linux shell脚本的方法  # JAVA发送http get/post请求  # 调用http接口、方法详解  # java调用百度定位api服务获取地理位置示例  # JAVA实现异步调用实例代码  # java直接调用python脚本的例子  # 使用httpclient无需证书调用https的示例(java调用https)  # Java调用.dll文件的方法  # 微信支付H5调用支付详解(java版)  # java 调用本地扬声器的步骤  # 可执行文件  # 的是  # 就能  # 我认为  # 很简单  # 比较好  # 这个时候  # 已经开始  # 先把  # 需要注意  # 台下  # 大家多多  # 时需  # 为父  # 再写  # 完毕后  # 在实际  # train  # word2vec  # txt 


相关文章: 如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  如何彻底删除建站之星生成的Banner?  建站之星免费模板:自助建站系统与智能响应式一键生成  建站主机如何选?高性价比方案全解析  SQL查询语句优化的实用方法总结  安徽网站建设与外贸建站服务专业定制方案  宝塔新建站点为何无法访问?如何排查?  如何通过cPanel快速搭建网站?  如何快速查询域名建站关键信息?  小程序网站制作需要准备什么资料,如何制作小程序?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  python的本地网站制作,如何创建本地站点?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  中山网站制作网页,中山新生登记系统登记流程?  唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?  专业网站建设制作报价,网页设计制作要考什么证?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何通过服务器快速搭建网站?完整步骤解析  图册素材网站设计制作软件,图册的导出方式有几种?  宝塔新建站点报错如何解决?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  建站主机无法访问?如何排查域名与服务器问题  常州自助建站工具推荐:低成本搭建与模板选择技巧  如何通过建站之星自助学习解决操作问题?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  如何自定义建站之星模板颜色并下载新样式?  如何快速使用云服务器搭建个人网站?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  做企业网站制作流程,企业网站制作基本流程有哪些?  如何通过虚拟机搭建网站?详细步骤解析  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  红河网站制作公司,红河事业单位身份证如何上传?  浅谈Javascript中的Label语句  建站之星安装模板失败:服务器环境不兼容?  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何基于PHP生成高效IDC网络公司建站源码?  建站之星ASP如何实现CMS高效搭建与安全管理?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  如何通过VPS建站无需域名直接访问?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Android自定义listview布局实现上拉加载下拉刷新功能  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何用5美元大硬盘VPS安全高效搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。