Запуск программы JAVA в качестве запланированной задачи
Я пытаюсь запустить простую программу JAVA один раз в день на машине под Windows 7.
Мой код отлично работает внутри NetBeans. Если я делаю чистую и строю, это говорит об этом:
C:\Program Files\Java\jdk1.7.0/bin/java -jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"
Это не работает из командной строки DOS из-за пространства между программой и файлами, поэтому я делаю это:
C:\Program Files\Java\jdk1.7.0/bin/java -jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar" -jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"
Это работает в командной строке DOS.
Теперь я создаю задачу в Планировщике Windows для запуска:
C:\Program Files\Java\jdk1.7.0/bin/java
с аргументами:
-jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"
Когда я запустил его, все, что я вижу, это поле DOS, которое на секунду мигает. Я ожидаю, что код займет около 30 секунд. Код должен сохраняться в базе данных, и никаких обновлений не происходит.
В коде также используется java.util.logging
, поэтому я должен видеть записи журнала, а я не знаю.
Я сильно подозреваю, что я не запускаю JAVA-команду должным образом или что существует плохая проблема классаpath, которую она представляет при запуске через планировщик, которого нет при запуске из приглашения DOS.
Помощь будет оценена по достоинству. Если вы видели это раньше и можете сортировать, это было бы здорово. Если вы можете сказать мне, как получить значимую трассировку ошибок из Scheduler, это также было бы очень полезно.
Спасибо!
Ответы
Ответ 1
Думаю, что вы можете создать простой пакет script, который запустит вашу программу таким образом:
@echo off
REM Eventually change directory to the program directory
cd C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\
REM run the program
"C:\Program Files\Java\jdk1.7.0\bin\java.exe" -jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"
Скопируйте его в блокнот и сохраните как java_script.cmd, а затем запланируйте этот script вместо программы напрямую.
Ответ 2
I решил после изменения всех ссылок шрифтов на "SansSerif"
Я использовал Jasper Reports внутри Java для создания PDF файла. Он отлично работал, когда я дважды щелкаю командный файл или планировщик с Windows Server 2003, но не работаю с Планировщиком 2008 года.
Я пробовал много разных вещей, ничего не работало, поэтому я могу сказать, что Windows Server 2008 блокирует доступ?
Теперь работает отлично. Поэтому, если у вас возникли проблемы, проверьте ссылки на все, что вы используете.
Ответ 3
Планировщик будет запускаться под другим пользователем, если вы не укажете, какой пользователь должен запускать. Если он не работает как ваш пользователь, он не сможет писать ваши каталоги.
Ответ 4
Реальная проблема с исходным вопросом - проблема установки java в системах Microsoft. Java jre устанавливается в Program Files\java. Исполняемый файл (java.exe) устанавливается только в этом каталоге java\bin. Запустив из командной строки, os выглядит в нужном месте для java.exe. Запуск из других инструментов MS (таких как VBA Excel или в этом случае TaskScheduler), это не так!
Вы можете видеть, что TaskScheduler ищет неподходящее место, просматривая историю задач в инструменте TaskScheduler. Дважды щелкните по некоторым событиям истории, и один из них отобразит код действия и возврата. Действие покажет, что TaskScheduler пытается запустить
"C:\Windows\system32\java.EXE"
![TaskScheduler History Details]()
Итак, скопируйте java.exe из каталога java\bin в место, где планировщик ищет, и теперь он будет работать.
Или обновите свою задачу и укажите полный путь к java.exe.
Вы также можете обновить системный путь среды, чтобы искать java в каталоге java\bin, но это должно применяться ко всем пользователям, и иногда это также является неисправным.