在实际项目中,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小时内与您取得联系。