http://blog.csdn.net/zhaoxinfan/article/details/11891701
在实际项目中,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 = br.readLine()) != null) {
- sb.append(line).append("\n");
- }
- String result = sb.toString();
- System.out.println(result);
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
其实就是一个Process类进行调用,然后把shell的执行结果输出到控制台下。
需要注意的是,在调用时需要执行waitFor()函数,因为shell进程是JAVA进程的子进程,JAVA作为父进程需要等待子进程执行完毕。
另外在eclipse控制台输出时并不是边执行边输出,而是shell全部执行完毕后输出,所以如果执行较为复杂的shell脚本看到没有输出时可能会误以为没有执行,这个时候看看终端里面的进程,TOP命令一下就能看到其实shell脚本已经开始执行了。
相关推荐
java调用shell脚本java调用shell脚本java调用shell脚本java调用shell脚本java调用shell脚本java调用shell脚本
java调用shell 包含简单的编写shell文件 调用含有参数的shell文件
在java代码中调用执行shell脚本,sqlldr导数与使用sqlplus在shell调用执行存储过程。 linux环境中有2个dba的用户:oracle、erm 还有1个web用户:erm 在linux环境中,这三个用户都可以直接在任意目录下执行该shell...
这是Java调用shell脚本的程序,其中有关于shell连接sftp的shell脚本和简单的讲解,仅供参考
解决有java调用shell脚本需求的童鞋们,包含一些调用的测试方法,有问题可留言回复。
在Java程序中调用Unix/Linux主机上的Shell命令,并返回相应执行结果。
我们选择后一种,即当完成外币资金的调度工作后,用Java的OutputStreamWriter来生成一个Txt文件,然后用Java来调用Shell脚本,在Shell脚本中完成FTP文件到Kondor系统的工作。
该工具包可实现远程调用Shell脚本,可帮助您轻松实现java远程调用Shell脚本
shell脚本
主要介绍了Java调用linux shell脚本的方法,需要的朋友可以参考下
详细的linux shell脚本启动java代码类。
linux中java项目需要重启一般使用先找到进程杀掉进程,然后找到项目启动,整个过程不算复杂,但是每次都操作一遍太麻烦,我这里把这个过程整理成shell脚本,大家可以修改里面项目名称,每次直接执行这个命令重启项目...
shell脚本启动Java程序测试工程
今天小编就为大家分享一篇关于Java调用shell脚本解决传参和权限问题的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
在开发过程中经常会员到在Linux环境中使用Shell脚本启动和停止java程序的情况,常用的java -jar命令只能运行jar文件,有很多不方便的地方,一旦代码修改就需要重新编辑打包,其实还有很多其他的方式,这个资源中包含...
java 执行linux命令源码,java调用shell脚本源码,java web发布war到tomcat,servlet文件上传,ajax文件上传。 java web 上传war包、停止、启动、发布tomcat。 命令修改成自己的目录即可使用。
利用Runtime.execute方法,我们可以在Java程序中运行Linux的Shell脚本,或者执行其他程序
使用runtime, 实现java客户端多次调用linux命令或者shell脚本,并返回对应结果或信息