Запутанная проблема с пакетом как запланированная задача - PullRequest
2 голосов
/ 06 января 2011


У меня есть пакетный файл DOS для ежедневного запуска.
Нечто подобное, как -

@ECHO ON
SET COMMON_LIB=commons-io-1.3.1.jar;
SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB%

java -cp %AR_CLASS_PATH% -Xms128m -Xmx256m FileCreating

PAUSE

Когда я запускаю пакетный файл напрямую, то есть двойной щелчок по файлу .bat, он работает нормально, открывается командное окно и выполняется все необходимые команды (обратите внимание на PAUSE).
Но когда я планирую ежедневное задание, я вижу статус «Выполняется». Кроме того, когда я щелкаю правой кнопкой мыши на задаче, это дает мне возможность завершить задачу (когда статус Running), но я не могу видеть командное окно и поэтому не могу разобрать, обработана ли она или есть ли ошибка генерироваться.
И так, не могу понять, если ошибка в classpath или мой код Java или где-то еще.

Среда - Windows Server 2003 R2 EE, SP2. Пользователь имеет права администратора.
Я проверил, но нет файла Schedlgu.txt в WINDOWS\Tasks dir.
Одна вещь, которую я заметил, это то, что значение CLASSPATH не имеет ссылки на jdk / bin, это может быть проблемой? Пожалуйста, порекомендуйте.

РЕДАКТИРОВАТЬ

Просто для упрощения я прокомментировал команду java, чтобы файл bat почти ничего не делал, затем установил некоторые переменные и затем сделал паузу, чтобы окно оставалось открытым. Все еще безуспешно.

Ответы [ 2 ]

0 голосов
/ 07 января 2011

Что ж, после некоторых проб и ошибок я наконец-то смог запустить запланированное задание.
Как предложил Дэйв, у меня был перенаправлен стандартный вывод в текстовый файл, чтобы я мог видеть, какие ошибки генерируются. Но текстовый файл вышел пустым, и задача была выполнена.
Поэтому я добавил java -version

@ECHO ON

SET COMMON_LIB=commons-io-1.3.1.jar;
SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB%

java -version

java -cp %AR_CLASS_PATH% -Xms128m -Xmx256m FileCreating

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

Затем я создал простую HelloWorld программу и добавил эту команду Java в файл bat

@ECHO ON

SET COMMON_LIB=commons-io-1.3.1.jar;
SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB%

java -version

java HelloWorld > C:\ChechHW.txt

java -cp %AR_CLASS_PATH% -Xms128m -Xmx256m FileCreating

В файле CheckHW.txt был выходной текст, который я дал в программе HelloWorld.

Так что теперь все это добавило путаницы и раздражения.

Интересно и удивительно, проблема заключалась в переменной CLASSPATH, которую я использую для установки classpath с помощью команды java.
Я не знаю, как и что важно, почему он начал работать после того, как я удалил %CLASSPATH% из

SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

Файл bat в моем вопросе был и работает в системе Windows XP без этого изменения.
Интересно, что некоторые настройки в Windows 2003 Server, связанные с путем к классу Java, не позволяли его обрабатывать.

0 голосов
/ 06 января 2011

Запланированные задачи не обязательно открывают видимое окно.

По моему опыту, если есть активный сеанс рабочего стола для соответствующего пользователя во время запуска запланированных задач, то обычно он создает окно вэта сессияЕсли таких сессий более одного, он выберет один из них, но я не уверен, как этот выбор сделан.Если такого активного сеанса нет, окно вообще не будет создано.

Скорее всего, задание выполняется, а затем останавливается с помощью команды PAUSE, и нет способа получить ввод, который мог бы сделатьэто продолжается.Это трудно проверить, поскольку PAUSE является внутренней командой и не будет отображаться как отдельный процесс в диспетчере задач или в проводнике процессов.Но если вы можете проверить, что не запущен Java-процесс, это подтвердит уверенность в том, что Java-пакет завершен, и он застрял в PAUSE.запланированное задание, имеет смысл перенаправить как стандартный вывод, так и стандартную ошибку в файл, чтобы вы могли искать ошибки после завершения задания.

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