`

JAVA调用Shell脚本

    博客分类:
  • Java
 
阅读更多

http://blog.csdn.net/zhaoxinfan/article/details/11891701

 

JAVA调用Shell脚本

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

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

首先是shell脚本

  1. #!/bin/sh  
  2. echo Begin word cluster  
  3. /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  
  4. echo The word classes were saved to file classes.csv  


然后是JAVA调用代码

  1. import java.io.BufferedReader;  
  2. import java.io.InputStreamReader;  
  3.   
  4. public class RunShell {  
  5.     public static void main(String[] args){  
  6.         try {  
  7.             String shpath="/home/felven/word2vec/demo-classes.sh";  
  8.             Process ps = Runtime.getRuntime().exec(shpath);  
  9.             ps.waitFor();  
  10.   
  11.             BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));  
  12.             StringBuffer sb = new StringBuffer();  
  13.             String line;  
  14.             while ((line = br.readLine()) != null) {  
  15.                 sb.append(line).append("\n");  
  16.             }  
  17.             String result = sb.toString();  
  18.             System.out.println(result);  
  19.             }   
  20.         catch (Exception e) {  
  21.             e.printStackTrace();  
  22.             }  
  23.     }  
  24. }  


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

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

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

分享到:
评论

相关推荐

    java调用shell(包含有参数的调用)

    总之,Java调用Shell脚本是一个有效的方法来在Java程序中实现复杂的Linux环境下的操作,这种技术尤其适用于需要进行系统级操作和自动化任务的场景。掌握这一技术可以帮助开发者更好地实现跨平台的功能,尤其是在开发...

    java调用shell脚本

    总结,Java调用Shell脚本是实现系统级任务自动化的重要手段,但同时也需要关注安全性、资源管理和错误处理等问题。通过合理使用Runtime和ProcessBuilder,我们可以构建出高效且安全的Java-Shell交互解决方案。在实际...

    java调用shell命令.pdf

    * 批量任务:我们可以使用 Java 调用 Shell 命令来执行批量任务,例如使用 `bash` 命令来执行批量脚本。 Java 调用 Shell 命令的优缺点 Java 调用 Shell 命令有很多优点,例如: * 可以执行系统命令或脚本,具有...

    java调用Shell脚本.doc

    ### Java调用Shell脚本详解 #### 一、前言 在实际开发过程中,经常会遇到需要结合Java程序与Shell脚本进行操作的情况。通过Java调用Shell脚本不仅可以实现复杂的功能,还可以提高程序的灵活性和扩展性。本文将详细...

    Java调用shell脚本

    首先,Java调用shell脚本主要通过`Runtime`类或`ProcessBuilder`类来实现。`Runtime.getRuntime().exec()`方法允许我们执行系统命令,而`ProcessBuilder`提供了更灵活的命令构建和环境变量设置功能。下面是一个基本...

    java调用shell脚本执行sqlldr与存储过程

    在java代码中调用执行shell脚本,sqlldr导数与使用sqlplus在shell调用执行存储过程。 linux环境中有2个dba的用户:oracle、erm 还有1个web用户:erm 在linux环境中,这三个用户都可以直接在任意目录下执行该shell...

    Java 调用 Shell 命令

    ### Java调用Shell命令知识点详解 #### 一、概述 在特定的应用场景中,比如完成外币资金的调度工作后,可能需要通过Java程序来生成一个文本文件,并进一步利用Shell脚本来实现文件传输等操作。这涉及到Java与操作...

    Java调用Shell脚本代码

    在Java程序中调用Unix/Linux主机上的Shell命令,并返回相应执行结果。

    java调用shell脚本完美封装

    在Java编程中,有时我们需要与操作系统进行交互,执行一些系统级别的任务,比如自动化运维、文件管理等,这时就可能需要用到调用Shell脚本。本文将详细介绍如何在Java中完美封装shell脚本的调用方法,并提供相关的...

    android系统中调用shell脚本

    7. **考虑安全性和性能**:在使用shell脚本时,一定要注意安全问题,避免执行可能导致系统不稳定或数据泄露的命令。同时,频繁的shell调用可能会消耗大量系统资源,因此要合理优化。 8. **存储脚本的位置**:通常,...

    java调用shell向DataX传参,带where条件,特殊字符

    Java调用Shell脚本执行DataX任务是一种常见的数据迁移或同步操作。DataX是阿里巴巴开源的数据同步工具,它支持多种数据库之间的数据迁移。在实际应用中,我们可能需要根据特定的业务逻辑,如where条件,来定制数据...

    java 远程调用Shell脚本客户端包

    Java 远程调用Shell脚本客户端包是一个实用的工具,专为开发者设计,使得在Java应用程序中执行远程Shell命令变得简单而高效。这个包的主要功能是通过Java代码发起对远程服务器上的Shell脚本的调用,从而实现跨平台的...

    java调用shell

    3. **批量文件处理**:例如,使用Shell脚本处理大量日志文件,进行日志分析或清理。 4. **跨平台兼容性测试**:通过在不同操作系统上运行Shell脚本,确保Java应用在各种环境下都能正常工作。 ### 总结 Java调用...

    Java调用shell脚本解决传参和权限问题的方法

    Java调用shell脚本解决传参和权限问题的方法 Java调用shell脚本解决传参...Java调用shell脚本解决传参和权限问题的方法可以通过将shell命令或脚本和参数放入一个数组中,并在执行脚本之前赋予脚本执行权限来解决问题。

    Java调用linux shell脚本的方法

    在Java中,我们可以通过`Runtime.getRuntime().exec()`方法来执行shell命令。例如,以下代码会赋予名为`test.sh`的脚本所有用户的执行权限: ```java String cmdstring = "chmod a+x test.sh"; Process proc = ...

    shell 脚本调用Java类

    标题"shell 脚本调用Java类"指出我们要讨论的主题是如何在Shell脚本中执行Java程序,尤其是直接调用Java类。下面我们将深入探讨这个主题。 首先,要从Shell脚本中运行Java程序,你需要确保系统已经安装了Java环境,...

    JAVA如何调用Shell脚本

    使用JAVA调用Shell脚本需要使用Process类,以下是一个示例: ```java import java.io.BufferedReader; import java.io.InputStreamReader; public class RunShell { public static void main(String[] args) { ...

    shell脚本启动Java程序测试工程

    下面我们将深入探讨如何使用shell脚本来启动Java程序以及相关的知识点。 首先,我们需要了解Java程序的运行方式。Java应用程序通常由一个主类(包含`main`方法)作为入口点。通过`java`命令,我们可以指定这个主类...

Global site tag (gtag.js) - Google Analytics