.jar aus batch file starten
Ich würde gerne ein .jar file aus eine Batch Datei starten.
java -jar C:\developsvn\nslookup\nslookup.jar
der code ist mir klar, aber wenn ich es dann ausführe, wird das programm ohne unterbruch immer wieder gestartet. so hat es nach einigen sekunden über 50 prozesse, welche immer mehr resourcen fressen, bis der computer abstürzt.
was mache ich dabei falsch? was müsste ich noch einfügen?
3 Antworten
java -jar C:\developsvn\nslookup\nslookup.jar
ist richtig, und startet nslookup.jar genau 1x. Entweder hast Dus in ne Schleife geschrieben, oder die .jar enthält eine Schleife, welche die vielen Prozesse startet. Gib die obige Zeile doch mal in die CMD ein, wenn es dann nur einen Prozess startet, liegt es an der Bat, wenn nicht, dann an der .jar.
Es könnte sich dann um (ungewollt) schlampige Programmierung oder (gewollt) eine Forkbomb http://de.wikipedia.org/wiki/Forkbomb handeln.
hi erstmal^^
lasst mich ne runde klugscheißen xD
das folgende bezieht sich auf die antwort von kosmopolit:
direkt starten kann man nur native windows-files also typischerweise .exe .com .bat, aber auch noch einige andere (zb. bildschirmschoner .scr)..
nun ist eine .jar aber nur ein java archive, dessen inhalt interpretiert wird.. um die zu starten - sollte das jar executable sein, dh. im manifest dieser eine MainClass angegebn -, muss man den interpreter aufrufen und die .jar diesem übergeben, genauso wie man es bei php files auch machen würde.
bei java ist es nun so wie oben schon korrekt steht: java -jar "pfad-zu-datei.jar"
nun konkret zu deiner frage:
dieser befehl sollte nun das programm einmal starten.. wenn nun soviele prozessinstanzen erzeugt werden, dann gibt es zwei/drei möglichkeiten:
es könnte sein, dass die batch (.bat) wiederholt aufgerufen wird, womöglich dadurch, dass du sie selbst in sich aufrufst:D
es könnte sein, dass du diesen befehl in einer schleife stehen hast
es könnte sein, dass dieses java-programm sich forked, dh dass das programm sich nun wiederholt (in einer schleife) selbst aufruft, mit gleichen oder anderen parametern.. dies könnte erstens von schlampiger programmierung, zweitens von der (böswilligen) eigenschaft als forkbomb(steht ja auch schon in der antwort cypherphunks^^) kommen oder drittens - nicht zu vernachlässigen - davon herrühren, dass dieses programm einfach mehrere prozesse beöntigt..
dh. im klartext, das programm könnte statt mehrere threads (multithreaded) mehrere prozesse starten, was bei einigen applikationen durchaus vorkommt (zb. apache webserver in entsprechender konfiguration), und vor- und nachteile aufweist..
dies könnt auch von falschen paramtern oder falscher konfiguration kommen.. sind denn bei diesem programm noch andere dateien dabei? dann musst du nämlich zuerst in das installationsverzeichnis wechseln..
kommt dieses forking denn außer kontrolle oder hört es iwann auf?
um grob heraus zu finden was passiert, kannst du den befehl mal auf der cmdline ausprobieren, wenns dann geht, liegt es an dir (deiner batch^^)
auf jdenfall würde ich dir nen gescheiten taskmanager empfehlen (keine werbung) wie systemexplorer.. (portable version: http://systemexplorer.net/downloadp.php )..
dann kannst du nämlich schauen, erstens mit welchen paramtern java gestartet wird und - noch viel wichtiger - von welchem prozess aus (treeview).. dann kannst du sehen, ob deine batch x-mal java startet, ob java sich x-mal selber startet (und wenn ja, ob nur der mutterprozess oder auch die kindprozesse.. wenn ich die kindprozesse nämlich auch xmal neu starten, dann hast du es höchstwahrscheinlich mit ner forkbomb zu tun) oder ob deine batch sich xmal selber startet oder xmal gestartet wird...;)
viel spaß noch bei der fehler suche^^
lg jojo
**** oben meinte ich natürlich java -jar "pfad-zu-datei.jar"
ich dachte für sowas gibts diese codefunktion, aber anscheined funzt die nich, wenn anführungs zeichen drinne sind..:D was solls
früher war es so, dass man nur .bat, .exe, .com aus einem batch-file starten konnte. mit .jar bin ich überfragt, aber bei nickles.de weiss es bestimmt jemand
Und was ist java.exe denn deiner Meinung nach?
Kleiner Tipp: Schau mal auf die Endung
Man kann alles aus einer .bat starten, das man sonst auch starten kann - das war schon immer so..