Win7 Aufgabenplanung + Jar

jengineer

Grünschnabel
Hallo Community,

ich habe ein Problem mit der Windows 7 Aufgabenplanung und einem Jar-File. Das Jar-File soll jede Stunde einmal ausgeführt werden.

Als Aktion habe ich unter "Programm ausführen" direkt das Jar-File angegeben. Es erscheint folgende Fehlermeldung des JVM-Launchers:
Code:
Could not find the main class: XXX.jar. Program will exit.
Ein direktes Ausführen über Cmd sowie Doppelklicken auf die Datei funktioniert einwandfrei.
Ich habe bereits versucht den Umweg über eine Batch-Datei zu gehen; mit folgendem Resultat:
Code:
Unable to access jarfile XXX.jar
(Bei Doppelklick auf die Batch-Datei wird alles ordnungsgemäß ausgeführt)

Ich weiß leider nicht, wieso die Jar einfach nicht als Aufgabe ausgeführt wird!?

Erstellt wurde die ausführbare Jar-Datei mit Hilfe von Eclipse.
Inhalt der MANIFEST.MF aus dem Ordner META-INF
Code:
Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: main.icsUpdater
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader


Ich freue mich auf zahlreiche Antworten ;)


Grüße
jengineer

// edit: quotes in codes geändert
 
Zuletzt bearbeitet:
Ich gehe mal stark davon aus das du keinen ABSOLUTEN Pfad nutzt sondern nur einen RELATIVEN. Das ist ein gewaltiger unterscheid. Zeig uns doch einfach mal das Commando was du dem TaskSchedueler übergeben hast und den Inhalt der Batch.
Der Aussage das es sich über einen Doppelklick und via CMD starten lässt entnehme ich das das JAR lauffähig ist.

Und für Ausgaben und Daten-Inhalte verwende bitte die Code-Tags und nicht QUOTE. Das sieht einfach nicht schön aus.
 
Hallo SPiKEe,

vielen Dank für deine schnelle Antwort (übrigens ein sehr interessantes Schiffe Versenken Projekt ;) ).

In der Batch steht folgendes:
Code:
java -jar XXX1.jar
java -jar XXX2.jar

Den TaskScheduler habe ich nicht über die CMD erstellt (geht das überhaupt?), sondern direkt über das vorgesehener Programm:
Start -> Alle Programme -> Zubehör ->
Systemprogramme -> Aufgabenplanung
Eigenschaften der Aktion:
Aktion: Programm starten
Programm: C:/.../.../.../XXX.bat (bzw. die Jars)
Argumente hinzufügen (optional): nix
Starten in (optional): nix



Grüße
 
Da liegt der Hase im Pfeffer : wie vermutet nutzt du RELATIVE Pfade. Dann ist es auch klar das dein Jar nicht gefunden wird. Du musst ABSOLUTE Pfade verwenden. Außerdem wird so über die Batch das zweite Programm erst gestartet wenn das andere beendet wurde. Falls das absicht ist ignoriere den Hinweis.
 
Ahhh vielen Dank!
Mit absoluten Pfadangaben innerhalb der Batch funktioniert es (obwohl die Batch im gleichen Ordner wie die Jars liegt..). Aber wieso man die jars nicht direkt ausführen lassen kann, weißt du nicht zufällig auch, oder?

Grüße
 
Zuletzt bearbeitet:
Hi

wenn du "cd" in die Batchdatei dazuschreibst, merkst du warum:
cd gibt das aktuelle Verzeichnis aus.

Wenn du die Bat aus der Konsole startest machst du das ja vermutlich im Verzeichnis mit den Jars.
Dort wird der Pfad von diesem Verzeichnis ausgegeben.

Beim Taskplaner ist der Ausgangspfad aber der vom Taskplaner, und in dem Verz. sind die Jars eben nicht.

Gruß
 
Ah okay, das macht Sinn. Für alle Interessierten: C:\Windows\System32

damit es nicht untergeht:
"Aber wieso man die jars nicht direkt ausführen lassen kann, weißt du nicht zufällig auch, oder?"
 
Kommt drauf an wie du das anstellst.
Wenn du einfach nur das Jar-File übergibst wird des Task-Schedueler sich vermutlich daran stören das .jar keine eigenständige Win32-Anwendung ist und bricht daher einfach ab. Er wird vermutlich seinen Dienst verweigern mal selber in der Registry nach zu gucken mit welchem Programm .jar verknüpft ist.
Umgehen kannst du dies in dem du anstatt dem Jar dierekt die java(w).exe angibst und dann mit dem -jar - Parameter wieder den ABSOLUTEN Pfad angibst.
Das selbe Problem hat man auch unter Unix mit CronJobs. Diese meckern auch wenn man ihnen dierekt ein Jar-File übergibt *zumindest EINIGE*.
 
Zurück