Всего пара баллов.
Во-первых, я никогда не понимал, почему Java настаивает на получении выходного потока процесса с getInputStream
- это просто странно. Но это только я ругаю, с этим мало что можно поделать: -)
Во-вторых, я не уверен, почему у вас в коде "голый" process.getInputStream();
. Я не думаю, что это плохо, но кажется ненужным.
В-третьих (и, честно говоря, это единственный, который, я думаю, может помочь), вам нужно отладить сам пакетный файл, а не код Java.
Это можно сделать с помощью следующих двух предложений.
Сначала получите поток ошибок и посмотрите на него. Вполне возможно, что cmd
доставляет информацию об ошибке, которую вы просто игнорируете.
Во-вторых, измените командный файл, чтобы выводить обильное количество операторов отладки, один за каждой строкой, если это необходимо. Мы надеемся, что это точно определит проблему в определенном месте командного файла.
Если это происходит только в производстве (и с перерывами), это сложнее, но мы, как правило, обнаруживаем, что наши клиенты более чем готовы принять временные исправления в стиле отладки, чтобы мы могли собирать информацию для устранения проблем, с которыми они сталкиваются.
Вывод из пакетного файла, который просто регистрируется, также является изменением низкого риска. Какой-то отладочный код не настолько низок для риска, и мы должны тщательно протестировать * , прежде чем задействовать производственные системы заказчика. Некоторые откажутся в упор, и это неразумная позиция.