выполнение командного файла в c # - PullRequest
3 голосов
/ 12 мая 2011

Я запускаю пакетный файл Java из C #. Если я запускаю его двойным щелчком, он выполняется успешно, но если я запускаю его из кода C #, он выдает исключение в потоке

"исключение в" основном "потоке java.lang.NoClassDefFoundError»..

в чем может быть причина и как ее можно решить? Я использую код:

var si = new ProcessStartInfo();

si.CreateNoWindow = true;
si.FileName = "batch-file path";
si.UseShellExecute = true;

Process.Start(si);

Ответы [ 4 ]

1 голос
/ 12 мая 2011

Скорее всего, вам не хватает некоторых параметров, которые будут включены в переменные среды вашей системы.

0 голосов
/ 12 мая 2011

Не используйте batch_process_path + "\" +, вместо этого используйте Path.Combine (), чтобы убедиться, что путь правильно снабжен косыми чертами.

Также прочтите это"Когда UseShellExecute имеет значение trueсвойство WorkingDirectory указывает местоположение исполняемого файла "

. Поэтому установите для него значение false.

0 голосов
/ 12 мая 2011

Попробуйте добавить следующий код в качестве первой строки в ваш пакетный файл.

@cd /d %~dp0
0 голосов
/ 12 мая 2011

Попробуйте установить рабочий каталог следующим образом:

process.StartInfo.WorkingDirectory = "C:\";

Кроме того, попробуйте несколько других опций, как указано здесь,

http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/20992653-dabf-4b31-85f7-e7bfbfb4557c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...