Как запустить Tomcat в Linux Ubuntu из программы Java или Scala

У меня есть одно требование, когда мне нужно запустить tomcat, nginx, kafka и т. Д. Из scala или java-программы, я могу проверить через java-программу, что если они запущены или не используются ps-ef| grep name, но если они не запущены, я Я хочу, чтобы они запускались из 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
задан 16 September 2015 в 14:47

1 ответ

Основная проблема, кажется, использование sudo. Вам нужно gksudo.

<час>

А простой пример Scala

package com.askubuntu.users.aamir

import scala.sys.process._

object startProcess {
  def main(args: Array[String]) {
    Process("ls -la")!
  }
}

или с sudo - права (Вам нужно gksudo)

package com.askubuntu.users.aamir

import scala.sys.process._

object startProcess {
  def main(args: Array[String]) {
    Process("gksudo nautilus")!
  }
}

и с немного больше <час> Java

package com.askubuntu.users.aamir

object startProcess {
  def main(args: Array[String]) {
    Runtime.getRuntime.exec(Array[String]("gksudo","nautilus"));
  }
}

И вот метод Java для запуска процесса

package com.askubuntu.users.aamir;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class startProcess {

    public static void main(String[] args) {
        BufferedReader in;
        PrintWriter out = new PrintWriter(System.out);
        try {
            Process p = Runtime.getRuntime().exec(new String[]{"/home/administrator/Desktop/apache-tomcat-8.0.5/bin","-c","echo def123@| sudo -S startup.sh"});
            in = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String text;
            while ((text = in.readLine()) != null) {
                out.println(text);
                out.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

или

package com.askubuntu.users.aamir;

import java.io.IOException;

public class startProcess {

    public static void main(String[] args) {
        try {
            Runtime.getRuntime().exec(new String[] { "gksudo","nautilus", "/tmp" });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
0
ответ дан 17 September 2015 в 00:47
  • 1
    Это может быть перемещением sda5 оставленный и затем развернуть право, если gparted теперь не делает это как один шаг. Удостоверьтесь, что не прервали любое перемещение как тот полностью поврежденный все данные, или почему мы всегда предлагаем хорошие резервные копии. Другая альтернатива может быть должна создать новый ext4 раздел и переместить / домой. help.ubuntu.com/community/Partitioning/Home/Moving – oldfred 7 December 2016 в 03:41

Другие вопросы по тегам:

Похожие вопросы: