最近在做产品遇到java在windows下面调用bat脚本和在linux下调用shell脚本,现在记录一下以便以后查阅。
首先贴出RuntimeUtils工具类,此类简化了 Runtime中exec的调用
package com.zohan.www.util;
import java.io.File;
import java.io.IOException;
import org.apache.commons.lang3.StringUtils;
/**
* @ClassName: RuntimeUtils
* @Description: runtime工具类 简化了执行命令行
* @author zohan inlw@sina.com
* @date 2012-10-30 下午8:42:09
*
*/
public class RuntimeUtils {
/**
*
* @Title: exec
* @Description: 简化执行命令行
* @param command 命令行
* @param envp 环境变量
* @param dir 路径
* @return Process 返回类型
* @throws IOException
*/
public static Process exec(String command, String envp, String dir)
throws IOException {
String regex = "\\s+";
String args[] = null;
String envps[] = null;
if (!StringUtils.isEmpty(command)) {
args = command.split(regex);
}
if (!StringUtils.isEmpty(envp)) {
envps = envp.split(regex);
}
return Runtime.getRuntime().exec(args, envps, new File(dir));
}
}
下面是开启tomcat和关闭tomcat的测试类TestRuntimeUtils
package com.zohan.ww.system;
import org.junit.Test;
import com.zohan.www.util.RuntimeUtils;
/**
* @ClassName: TestRuntimeUtils
* @Description: RuntimeUtils测试
* @author zohan inlw@sina.com
* @date 2012-10-30 下午9:02:48
*
*/
public class TestRuntimeUtils {
/**
*
* @Title: testStartTomcat
* @Description: windows 下启动tomcat
* @throws Exception
* @return void 返回类型
* @throws
*/
@Test
public void testStartTomcat() throws Exception {
String command = "cmd.exe /c startup.bat";
String dir = "D:\\ehcache\\apache-tomcat-6.0.35\\bin";
Process process = RuntimeUtils.exec(command, null, dir);
int i = process.waitFor();
System.exit(i);
}
/**
*
* @Title: testStopTomcat
* @Description: windows 下关闭tomcat
* @throws Exception
* 设定文件
* @return void 返回类型
* @throws
*/
@Test
public void testStopTomcat() throws Exception {
String command = "cmd.exe /c start shutdown.bat";
String dir = "D:\\ehcache\\apache-tomcat-6.0.35\\bin";
Process process = RuntimeUtils.exec(command, null, dir);
int i = process.waitFor();
System.exit(i);
}
/**
*
* @Title: testStartWas
* @Description: linux 下 启动was服务
* @throws Exception 设定文件
* @return void 返回类型
* @throws
*/
@Test
public void testStartWas() throws Exception{
String command = "sh startServer.sh server1";
String dir = "/usr/IBM/WebSphere/AppServer/profiles/AppSrv01/bin";
Process process = RuntimeUtils.exec(command, null, dir);
int i = process.waitFor();
System.exit(i);
}
/**
*
* @Title: testStopWas
* @Description: linux 下停止was服务
* @throws Exception 设定文件
* @return void 返回类型
* @throws
*/
@Test
public void testStopWas()throws Exception{
String command = "sh stopServer.sh server1 -username admin password";
String dir = "/usr/IBM/WebSphere/AppServer/profiles/AppSrv01/bin";
Process process = RuntimeUtils.exec(command, null, dir);
int i = process.waitFor();
System.exit(i);
}
}
注意事项:在此过程中环境为null,会继承当前线程的环境变量。
分享到:
相关推荐
这篇博客“java调用bat批处理与sh脚本”将详细讲解如何在Java程序中实现这一功能。 首先,我们要理解Java是如何与操作系统进行交互的。Java提供了`Runtime`类和`ProcessBuilder`类,这两个类都可以用来执行外部命令...
这涉及到Java与操作系统层面的交互,其中关键的技术点包括:如何使用`OutputStreamWriter`来生成文本文件,以及如何通过Java调用Shell脚本来完成后续的文件处理任务。 #### 二、Java生成文本文件 为了生成文本文件...
9. **处理脚本权限**:确保脚本文件有适当的执行权限(如`chmod +x myscript.sh`),否则在Android设备上可能无法执行。 10. **异常处理**:在调用shell脚本时,要处理可能出现的IOException、InterruptedException...
2、用sh直接执行shell和在java直接执行shell是有区别的,要在shell文件内增加oracle的环境变量即. /home/oracle/.bash_profile 这句话,否则在执行sqlldr会报如下异常: Message 2100 not found; No message file ...
Java调用Shell脚本主要依赖于`java.lang.Runtime`类中的`exec()`方法。此方法允许Java程序启动新的进程,并可传递参数给这个新进程,其中包括Shell命令。当Java程序调用`exec()`时,操作系统会创建一个子进程来执行...
### Java调用命令行启动Tomcat #### 一、引言 在开发环境中,我们经常需要启动Tomcat服务器来运行Java Web应用。通常情况下,我们会通过双击`startup.bat`或`catalina.sh`脚本来启动Tomcat。然而,在某些特定场景...
3. **创建批处理文件**:如果Java代码在不同操作系统之间运行,可以创建一个批处理文件(`.bat` for Windows, `.sh` for Linux),然后在Java中调用这个批处理文件,从而简化命令行参数的处理。 4. **使用ffmpeg的...
- `Java源码文件`(如`JavaClass.java`):定义了被C语言调用的Java类和方法。 - 可能还有`Makefile`:用于自动化编译过程。 要理解这个例子,你需要熟悉JNI的API,包括`JNIEnv`指针的使用,以及如何处理Java和C...
通过第二步认证成功后当前目录就位于/home/username/目录之下,可以指定脚本文件所在的绝对路径,或者通过cd导航到脚本文件所在的目录,然后传递执行脚本所需要的参数,完成脚本调用执行。 如果需要执行多个Linux...
线程堆栈信息可以让我们深入观察到线程的运行状况,包括线程的当前状态、调用堆栈、锁信息等。为了获取这些信息,我们可以使用jstack工具,它是Java开发工具包(JDK)的一部分,能够输出Java进程的线程堆栈跟踪信息...
在Windows中,批处理文件通常以`.bat`或`.cmd`为扩展名,而Linux和Unix系统中,shell脚本通常以`.sh`结尾。这个工具类可能使用了Java的`Runtime`或者`ProcessBuilder`类来执行外部命令。 `Runtime.getRuntime()....
例如,我们可以创建一个名为`sendKondorFile.sh`的Shell脚本,然后在Java中调用它: ```java String shellCommand = "sh " + sendKondorShellName; executeShell(shellCommand); ``` 这样,Java程序就可以利用...
### JAVA读取环境变量 #### 知识点概述 在Java程序中,有时我们需要根据不同的运行环境(如Windows或Linux)来获取系统环境变量。这些环境变量包含了操作系统配置的重要信息,比如路径设置、用户信息等。本文将...
Java调用shell脚本解决传参和权限问题的方法是指在Java程序中调用shell脚本来执行某些操作,例如执行系统命令、文件操作等。在调用shell脚本时,可能会遇到传参问题和权限问题,本文将详细介绍如何解决这两个问题。 ...
除了执行命令,文档中还提到了Java程序中对DOS命令的调用,例如使用`convert`命令进行文件格式转换、使用`cmd`命令来启动文件、使用`start`命令打开文档等: ```java Process process = Runtime.getRuntime().exec...
### Unix网络相关命令:...通过上述步骤,我们不仅了解了FTP的基本命令和使用方法,还学习了如何在Unix/Linux系统中进行文件的打包压缩以及如何配置Java开发环境。这对于日常的系统管理和软件开发都是非常有用的技能。
另外,对于更复杂的脚本调用,如在Windows环境下执行批处理文件 `.bat` 或 `.cmd`,你需要使用相应的命令解释器,如 `cmd.exe /c` 对于批处理文件。 至于标签中的"工具",Java社区有许多第三方库可以帮助简化这个...
cmd命令行中英互译,java编写的一个类,调用谷歌翻译的url。 功能比较简洁,但是有效。 配置环境变量可在任意目录下使用该命令。 C:\Users\**>fy deploy C:\Users\**>java -cp D:\ProgramFiles\diyTools Test deploy...
执行这段代码时,会调用DOS命令`del`来删除指定路径下的文件。 4. **检查结果**:最后一步是验证文件是否被成功删除。可以在指定的路径下手动检查文件是否存在,或者通过其他编程手段(如使用Java的`File`类的方法...