如何从 Java 或 Scala 程序在 Linux Ubuntu 中启动 tomcat

How to start tomcat in Linux Ubuntu from Java or Scala program

我需要从 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"))

但它不起作用。

在 Java 中您需要使用 ProcessBuilder:

ProcessBuilder builder = new ProcessBuilder(command, option1, option2);

// Optional redirect
// builder.redirectOutput(file);

Process p = builder.start();

更多信息: java.lang.ProcessBuilder

从 Java 如果您使用 Windows OS

,您可以像下面这样实现
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