Exécution d'un programme JAVA en tant que tâche planifiée
Je suis en train de lancer un programme JAVA simple une fois par jour sur une machine Windows 7.
Mon code fonctionne très bien à l'intérieur de NetBeans. Si je fais un nettoyage et construire il suggère ceci:
C:\Program Files\Java\jdk1.7.0/bin/java -jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"
Cela ne fonctionne pas à partir de l'invite DOS, bien sûr, à cause de l'espace entre le programme et les fichiers donc ce que je fais:
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"
Cela fonctionne à partir de l'invite ms-DOS.
J'ai maintenant créer une tâche dans le Planificateur de tâches Windows pour exécuter:
C:\Program Files\Java\jdk1.7.0/bin/java
avec des arguments:
-jar "C:\Users\User1\Documents\NetBeansProjects\Facebook\dist\Facebook.jar"
Quand je puis l'exécuter, tout ce que je vois est une boîte DOS clignote pendant une seconde. J'attends le code afin de prendre environ 30 secondes à s'exécuter. Le code devrait persister des données dans une base de données et aucune mise à jour n'arrive.
Le code utilise aussi java.util.logging
donc je devrais voir les entrées du journal et je n'ai pas.
Je soupçonne fortement que je ne suis pas l'exécution de la commande JAVA correctement ou qu'il y a un mauvais chemin de classe d'émission qu'il présente lors de l'exécution via le Planificateur qui n'est pas là lors de l'exécution à partir de l'invite ms-DOS.
Aide serait appréciée. Si vous avez déjà vu ça avant et permet de trier, ce serait génial. Si vous pouvez me dire comment obtenir un véritable trace de l'erreur de Planificateur que ce serait vraiment utile.
Merci!
source d'informationauteur Kevan
Vous devez vous connecter pour publier un commentaire.
Je Pense que vous pouvez créer un simple script batch qui va lancer votre programme de la façon suivante :
Le copier dans le bloc-notes et enregistrez-le comme java_script.cmd et ensuite planifier ce script au lieu de directement le programme.
Je résolu après le changement de tous polices références "SansSerif"
J'ai été à l'aide de Jasper Reports à l'intérieur de Java pour créer un fichier PDF. Ça marchait très bien quand je double-clique sur le fichier batch ou le Planificateur de Windows Server 2003, mais ne fonctionne pas avec le Planificateur de 2008.
J'ai essayé beaucoup de choses différentes, rien n'a fonctionné, donc j'ai bien Pourrait-il être que Windows Server 2008 est le blocage de l'accès?.
Travaille maintenant parfait. Donc, si vous rencontrez des problèmes pour vérifier les références à tout ce que vous utilisez.
Le planificateur sera exécuté sous un autre utilisateur, sauf si vous spécifiez ce que l'utilisateur à exécuter en tant que. Si elle n'est pas en cours d'exécution en votre qualité d'utilisateur, alors il ne sera pas en mesure d'écrire à vos répertoires.
Le vrai problème, à la question d'origine est un java problème d'installation sur les systèmes Microsoft. Java jre est installé dans Program Files\java. L'exécutable (java.exe) est seulement installé java\bin. L'exécution de la ligne de commande, le système d'exploitation semble dans l'emplacement approprié pour le java.exe. L'exécution des autres états membres des outils (tels que VBA Excel ou dans ce cas TaskScheduler), il ne le fait pas!
Vous pouvez voir que TaskScheduler est à la recherche dans le mauvais endroit grâce à la visualisation de l'historique des tâches dans le TaskScheduler outil. Double-cliquez sur certains événements de l'histoire et une liste de l'action et le code de retour. L'action sera de montrer que le TaskScheduler essaie de
"C:\Windows\system32\java.EXE"
Copier java.exe de la java\bin dans le lieu où le planificateur est à la recherche, et maintenant, il va travailler.
Ou de mise à jour de votre tâche et de fournir le chemin d'accès complet java.exe.
Vous pouvez également mettre à jour le système d'environnement path pour rechercher java java\bin, mais qui doit s'appliquer à tous les utilisateurs et c'est parfois défectueux.