2014-09-08 2 views
3

Я хочу, чтобы начать эти 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. 

Я имею в виду, обслуживание существующих здесь:

oracleProblem

Все, что я мог бы попробовать? Я попробовал String s8 = "\" Oracle ORCL VSS Write Service \ ""; чтобы дать cmd правильный формат, но не работает ...

+0

Это работает, если вы его цитируете? String s8 = "\" Oracle ORCL VSS Write Service \ ""; –

+0

Попробуйте без «cmd/c» - 'sc' является' .exe', а не cmd, поэтому Java может выполнить его напрямую, не используя cmd. –

ответ

2

Отображаемая строка не является реальным/внутренним именем службы.

Откройте свойства этой записи в списке услуг и вы увидите ее имя службы (которое не содержит пробелов).

Смежные вопросы