Текущий поток не является исключением владельца

в моем приложении я использую код, который запускает пакетный файл, при его выполнении я получаю исключение, т. е. текущий поток не является владельцем. Здесь я хочу упомянуть, что мое приложение основано на разработке плагинов Eclipse. Ниже приведен мой код, пожалуйста, посмотрите и выясните, в чем проблема, чтобы помочь мне ..

/*.......any code.........*/
try
{
    Runtime runtime = Runtime.getRuntime();
    String cmd = new String(C:\\abc.bat);
    process = runtime.exec("\"" + cmd + "\"");

    process.wait();

}
catch (Exception e)
{
    e.printStackTrace();
}

/***********any code**************/
 Joachim Sauer24 мая 2013 г., 10:01
Обратите внимание, чтоprocess.wait почти наверняка делаетне делай то, что хочешь. Вы, вероятно, хотите позвонитьwaitFor(), что также решит вашу проблему.
 Andrew Eisenberg24 мая 2013 г., 19:00
Вам нужно быть более конкретным. Что ты пытаешься сделать? Как упоминает @JoachimSauer,wait() почти наверняка неправильно. Что ты пытаешься сделать. Обратите внимание, что я удалил тег eclipse-plugin, так как этот вопрос не имеет никакого отношения к плагинам. Если это так, вы должны отредактировать вопрос так, чтобы релевантность eclipse-plugin была явной.

Ответы на вопрос(1)

Ожидание - это метод, принадлежащий Object, чтобы использовать метод, вы должны получить блокировку объекта, изменить свой код на,

try
{
    Runtime runtime = Runtime.getRuntime();
    String cmd = new String(C:\\abc.bat);
    process = runtime.exec("\"" + cmd + "\"");
    synchronized (process){
       try{
          process.wait();
       } catch (InterruptedException e) {
          e.printStackTrace();
       }
    }
}
catch (Exception e)
{
   e.printStackTrace();
}
 Andrew Eisenberg24 мая 2013 г., 19:01
Разумный ответ. Дон»не знаю, почему за него проголосовали. Upvoting, хотя это, вероятно, не правильный ответ.

Ваш ответ на вопрос