Я хочу, чтобы начать эти 2 услуг:Java начиная услуг с «особым» именем
String s7 = "OracleDBConsoleorcl";
String s8 = "Oracle ORCL VSS Write Service";
Используя этот метод:
private void startService(String SERVICE_NAME) {
String[] script = {"cmd.exe", "/c", "sc", "start", SERVICE_NAME};//to start service
try {
Process p = Runtime.getRuntime().exec(script);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
if (line.equals("0")) {
System.out.println(line);
} else {
System.out.println(line);
}
line = reader.readLine();
}
} catch (IOException | InterruptedException e1) {
System.out.println(e1);
}
}
Это проблема: s7 запускается должным образом, но s8 оленья кожа, потому что (мое предположение), что имя службы содержит пробелы, ведущие к этой ошибке:
[SC] StartService: OpenService FAILED 1060:
The specified service does not exist as an installed service.
Я имею в виду, обслуживание существующих здесь:
Все, что я мог бы попробовать? Я попробовал String s8 = "\" Oracle ORCL VSS Write Service \ ""; чтобы дать cmd правильный формат, но не работает ...
Это работает, если вы его цитируете? String s8 = "\" Oracle ORCL VSS Write Service \ ""; –
Попробуйте без «cmd/c» - 'sc' является' .exe', а не cmd, поэтому Java может выполнить его напрямую, не используя cmd. –