JAVA如何调用Shell脚本

发布时间 - 2026-01-11 02:48:20    点击率:

在实际项目中,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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 做企业网站制作流程,企业网站制作基本流程有哪些?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  Laravel怎么实现模型属性的自动加密  如何在IIS服务器上快速部署高效网站?  如何在局域网内绑定自建网站域名?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  如何注册花生壳免费域名并搭建个人网站?  如何快速生成高效建站系统源代码?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  android nfc常用标签读取总结  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel如何集成Inertia.js与Vue/React?(安装配置)  清除minerd进程的简单方法  Java类加载基本过程详细介绍  青岛网站建设如何选择本地服务器?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Laravel如何使用Collections进行数据处理?(实用方法示例)  Laravel如何实现API资源集合?(Resource Collection教程)  详解jQuery中的事件  郑州企业网站制作公司,郑州招聘网站有哪些?  高端建站三要素:定制模板、企业官网与响应式设计优化  如何快速搭建支持数据库操作的智能建站平台?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  香港网站服务器数量如何影响SEO优化效果?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  想要更高端的建设网站,这些原则一定要坚持!  JavaScript Ajax实现异步通信  常州企业网站制作公司,全国继续教育网怎么登录?  开心动漫网站制作软件下载,十分开心动画为何停播?  Java垃圾回收器的方法和原理总结  微信小程序 wx.uploadFile无法上传解决办法  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Python图片处理进阶教程_Pillow滤镜与图像增强  利用JavaScript实现拖拽改变元素大小  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何用PHP工具快速搭建高效网站?  重庆市网站制作公司,重庆招聘网站哪个好?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何获取PHP WAP自助建站系统源码?  Bootstrap整体框架之CSS12栅格系统  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】