Köra en jar-fil en gång dagligen

Permalänk
Medlem

Köra en jar-fil en gång dagligen

Hej!

Jag har skapat en körbar Jar-fil som kan köras i cmd via detta kommando:

java -jar minjarfil.jar

Det fungerar utmärkt och den gör vad jag vill.

Jag vill att den ska köras dagligen och tänkte därför lägga denna i Windows Task Scheduler (Windows Web Server 2008 R2).
För det första, är det fel sätt? Finns det något bättre sätt?

För att göra detta har jag skapat en .bat-fil innehållande följande (Den ligger i samma mapp som jar-filen)

java -jar minjarfil.jar

Kör jag bat-filen fungerar det också perfekt.

Mitt problem uppstår när jag lagt in den i Task Scheduler, testar jag köra den därifrån ser allt ut att fungera. Men dess funktion sker inte, så den kan inte ha körts. Har bland annat en email-funktion i jar-filen så jag ser ju att den inte har körts för jag får inget epost-meddelande vilket jag fått på de tidigare två försöken.

Har ni någon aning om vad som kan vara fel? Kan Task Scheduler inte köra bat-filer?

Tack på förhand.

Visa signatur

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan

Permalänk
Medlem

Hej!

Tre snabba tips.

1) En skönthetsgrej. Gör cmd-filer istället för bat. Mindre betydelse idag men det uppfattas som modernare (Wikipedia om batch-filer
2) När du kör en scheduled task så används system-path:en till kommandon. Antagligen så hittas inte 'java' när din bat-fil körs. Lägg därför in den fulla sökvägen till java i filen. Provkör manuellt så du får till det med mellanslag om den ligger i 'Program Files' eller liknande. Om du inte vill lägga in en hårdkodad sökväg i bat(cmd)-filen så se till så att katalogen till 'java' ligger i system-pathen och inte user-pathen:
3) jar argumentet är relativt från "aktuell katalog" för programmet (eller skriptet) som körs. I en scheduled task så skulle jag inte göra ett antagande om vilken som är aktuell katalog. Tre lösningar på problemet. Hårdkoda in sökvägen i bat-filen (....java -jar d:\skrot\minfil.jar). Flytta dig till katalogen innan du kör java kommandot (vilket kan vara lite lurigt om det är en annan drive också). Låt skriptet kalkylera den korrekta absoluta sökvägen (om bat(cmd)-filen ligger i samma katalog) genom att skriva ....java -jar %dp0minfil.jar. %dp0 expanderas till d:\skrot\ om det är där filen ligger.

//C

Permalänk
Medlem
Skrivet av conio:

Tre snabba tips.

Tack. Tror du är på rätt spår, satt också och funderade på om det var sökvägen den inte hittade. Går det att se ett eventuellt felmeddelande på något sätt? Skitjobbigt att chansa ju.
Nu skriver jag

C:/"Program Files"/Java/jre6/bin/java.exe -jar d:/sökväg/jarfilen.jar

Fungerar om jag kör .cmd-filen (Ja, jag ändrade ) men fortfarande inte som task.
Ser du något uppenbart fel?

Visa signatur

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan

Permalänk
Medlem
Skrivet av ePoint:

Ser du något uppenbart fel?

Bra att du ändrade

Nej jag ser inget uppenbart. Har bara två generella tips.

Det första är att kolla eventloggen. Om den misslyckades att köras av någon anledning så borde det finnas loggat där. Om det är något vettigt fel eller inte är ju en annan sak.

Den andra saken är att tasken kanske inte körs på grund av att 'java' vill ha en konsoll att skriva till. Prova att ändra kommandot till javaw istället för java.

//C

Permalänk
Medlem
Skrivet av conio:

Nej jag ser inget uppenbart. Har bara två generella tips.

//C

Det fungerade när jag instället för att köra CMD-filen starade javaw.exe direkt från Tasks med parametrarna

-jar filen.jar

Tack för hjälpen!

Visa signatur

"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." - Brian W. Kernighan