我需要从scala或java程序启动tomcat,nginx,kafka等,我能够通过java程序检查它们是否正在使用ps-ef| grep nameofservice
但是如果它们没有运行我希望它们能够从java或scala程序开始,我为tomcat尝试了这个
val pr = Runtime.getRuntime.exec(Array[String]("/home/administrator/Desktop/apache-tomcat-8.0.5/bin","-c","echo def123@| sudo -S startup.sh"))
但它不起作用。
答案 0 :(得分:2)
如果您使用的是Windows操作系统,从Java可以实现如下所示
String startupBat = "c:\Software\Tomcat.version\bin\startup.bat";
Process child = Runtime.getRuntime().exec(command);
对于Linux你必须使用sh脚本
try{
String startupSh = "/home/Software/Tomcat.version/bin/startup.sh";
Process child = Runtime.getRuntime().exec(startupSh );
}catch(Exception e){
e.printStackTrace();
}
另一个解决方案就是这个
Runtime runtime = Runtime.getRuntime();
Process p1 = runtime.exec("cmd /c start " + PATH_TO_TOMCAT + "//catalina.bat run ", null, new File(PATH_TO_TOMCAT));
您可以在此处查看Java Code Examples for org.apache.catalina.startup.Tomcat
答案 1 :(得分:-1)
在Java中,您需要使用ProcessBuilder:
ProcessBuilder builder = new ProcessBuilder(command, option1, option2);
// Optional redirect
// builder.redirectOutput(file);
Process p = builder.start();
更多信息: java.lang.ProcessBuilder