Runtime.exec -> Prozesskontrolle abgeben ?

Status
Nicht offen für weitere Antworten.
T

tuxedo

Gast
Hallo,
ich habe ein kleines Problem mit dem ausführen von Programmen via runtime.exec() ...

Es geht um folgendes:
Ich muss PDF Dateien drucken und die für mich in Frage kommende Lösung heisst zur Zeit drucken via Acrobat Kommandozeile.

Im Programm sieht das, zur Zeit noch testweise, so aus:

Code:
				String cmd="cmd.exe start /C \""+ConfigClient.ACROBATREADERPATH+"\" /p /h "+absPath+" ";
				System.out.println(cmd);
				Runtime.getRuntime().exec(cmd);

Problem dabei ist: Das Programm macht erst weiter wenn Acrobat geschlossen wurde. Aber es gibt keine Kommandozeiledie Acrobat nach der drucktätigkeit wieder schließt. Ist auch nich weiter schlimm. Acrobart ist ja nur minimiert in der Tasleiste. Das würde, bei einem erneuten Aufruf sogar Zeit sparen weils ja schon offen ist.

Was ich jetzt aber möchte ist das reine aufrufen von Acrobat. Das Programm soll dann einfach weitararbeiten können.
Geht aber nicht da Java scheinbar den Acrobat-Prozess noch unter seinen Fittichen hat.

Gibts ne Möglichkeit Java beizubringen dass es einfach das native Programm startet und diesen Prozess dann einfach dem OS überlässt?

Ich hab schon andere Sachen probiert. Das hier z.B.:

Code:
				String cmd="cmd.exe start /C \""+ConfigClient.ACROBATREADERPATH+"\" /p /h "+absPath+" ";
				System.out.println(cmd);
				Process proc = Runtime.getRuntime().exec(cmd);
				Thread.sleep(1000);
				proc.destroy();

Bei kleinen Dokumenten geht das auch. Aber bei größeren ist das etwas waage. Man weiß ja nicht im vorraus wie lange man warten muss bis der Druck beim Spooler angekommen ist.
Desweiteren hätte das den Nachteil dass wenn ich ein und das selbe Dokument in nem Serienbrief 200mal haben will, ich 200mal Acrobat auf und wieder zumachen muss. Geschickter wäre es wenn acrobat offen bleibt und beim nächsten Aufruf der Kommandozeile die bereits offenen Acrobat-Instanz genutzt wird.

Wenn ich das in derEingabeaufforderung in Windows teste geht das nämlich so.... Nur Java will nicht so we ich will.

Any Ideas ?
 
T

tuxedo

Gast
*Dummfrag*

Wie, wenn nicht über exec() soll ich denn mit Java Acrobat starten?!
Oder meinst du exec() einfach ohne cmd.exe starten? Das geht meines wissens bei Windows nicht....

*umaufklärungbitt'*

Oder meinst du ich soll den Anwender dazu überreden Acrobat selbst zu öffnen? Bei einzelnen Dokumenten wäre das mit zudrücken von mind. 5 Hühneraugen evtl noch möglich. Aber wenn ich aus der Anwendung mal eben nen Serienbrief mit 200 Empfängern drucken will wirds doch etwas doof mit 200 einzelnen PDFs die alle ne individuelle Empfängeradresse haben...

Gruß
Alex
 

Murray

Top Contributor
alex0801 hat gesagt.:
!
Oder meinst du exec() einfach ohne cmd.exe starten? Das geht meines wissens bei Windows nicht....
Da weisst Du mehr als ich - bei mir hat das bisher immer gut funktioniert.

cmd.exe brauchst Du, wenn Du Betriebssystemfunktionen wie z.B. DIR ausführen willst, die nicht in Form einer eigenen Exe vorliegen.
 
T

tuxedo

Gast
Oha, ja da ist was dran ... Stimmt. Hatte sowas immer mit "dir" getestet ... Hatte dabei nicht bedacht dass dir kein eigenständiges Programm ist. Ich werds mal probieren...

Danke,
Alex
 
T

tuxedo

Gast
Okay,
ich hab jetzt glaub schon fast alles getestet...

Hab Testweise das ganze mal auf ne Handvoll Zeilen reduziert:

Code:
import java.io.IOException;

public class ExecTest {

	public static void main(String[] args) {

		String cmd="C:\\Programme\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe /p /h";
		
		try {
			Runtime.getRuntime().exec(cmd);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Egal wie ich es drehe und wende: Das Programm bleibt solange offen wie Acrobar offen ist. Java bleibt also, auch ohne "cmd.exe" und ohne "cmd.exe /C start ..." der Vaterprozess der sich solange nicht beendet bis alles Kindprozesse beendet sind..

Wie schaff ich's statt einem Kindprozess nen zweiten, unabhängigen zu starten?

Weiß jemand ob das überhaupt möglich ist? Oder geht das mit Java gar nicht?

Gruß
Alex
 

Murray

Top Contributor
Hmm, wenn ich das Programm bei mir (unter Win XP) laufen lasse, terminiert die VM sofort, obwohl der Reader noch offen ist.

Nur wenn ich mit
Code:
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();
explizit auf das Beenden des Kindprozesses warten lasse, bleibt die VM offen, bis der Reader geschlossen wurde.
 
T

tuxedo

Gast
Komisch, bei mir bleibts offen.

Nutze Eclipse 3.1 mit Java 1.5 Update 8 und WindowsXp Prof...

Wieso bleibt das bei mir offen ?!
[uodate]
vielleicht liegts ja am Acrobat Reader?!
Nutze Version 7.08 ... Welche nutzt du ?!

-
Alex
 

Murray

Top Contributor
Ich habe das nicht aus Eclipse, sondern direkt von der Kommandozeile aus gestartet (Win XP prof, JDK 1.5.0_06)
 
T

tuxedo

Gast
Jupp, scheint an Eclipse zu liegen. Wenn ichs in der Console starte gehts ... Is doch kacke.. Muss mal schauen ob Eclipse da ne Einstellung für hat... Is doch doof.. wie soll man denn da vernünftig entwickeln wenn sich programme in eclipse anders verhalten wie in der console ?!

- Alex
 

Murray

Top Contributor
Verhält es sich denn wirklich anders? In Eclipse bliebt das Konsolenfenster ja auch nach der Terminierung stehen; in der Überschrift steht dann aber "terminated"; außerdem ist der Terminate-Button (das rote Quadrat ganz links in der Button-Leiste der Console) dann abgegraut
 
T

tuxedo

Gast
Ja, es verhlt sich anders. Das rote Quadrat bleibt rot und es steht auch nicht "terminated" in der Leiste.
Erst wenn ich Acrobat selbst von Hand schließe wird das Quadrat grau...

Seltsame sache. Muss ich halt während dem Entwickeln dran denken Acrobat zuzumachen wenn ich mein Programm nochmal starten will...

Hab in den Eclipse-Preferences übrigens keine passende Option für dieses Phänomen gefunden.


Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
M Runtime.exec() verursacht auf manchen Systemen Probleme - Ursache unklar Allgemeine Java-Themen 2
S Command funktioniert in Kommandzeile aber nicht mit ProcessBuilder bzw. Runtime.exec auf MAC Allgemeine Java-Themen 3
Thallius Runtime.getRuntime().exec " escapen? Allgemeine Java-Themen 9
N Runtime.getRuntime().exec Problem mit find Allgemeine Java-Themen 3
T Bluescreen bei Runtime.exec(); Allgemeine Java-Themen 8
I Runtime.getRuntime().exec Problem Allgemeine Java-Themen 4
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
N Runtime.exec() Exception Problem Allgemeine Java-Themen 3
N Runtime.exec() Allgemeine Java-Themen 7
truesoul Runtime.getRuntime().exec nebenbei ausführen Allgemeine Java-Themen 12
Z Runtime.getRuntime().exec-Problem Allgemeine Java-Themen 4
J Runtime.exec setzt Fokus auf Frame Allgemeine Java-Themen 2
V Probleme mit Runtime.exec() Allgemeine Java-Themen 3
M Runtime.exec() - Performance / Frage zu Threads Allgemeine Java-Themen 5
M Runtime.getRuntime().exec(cmd); auf windows ... Allgemeine Java-Themen 2
T Runtime.exec() Allgemeine Java-Themen 3
X Wann ist Runtime.getRuntime().exec mit Copy fertig? Allgemeine Java-Themen 10
G Output eines über Runtime.getRuntime.exec gestarteten Jars Allgemeine Java-Themen 6
N runtime.exec() Problem Allgemeine Java-Themen 6
W Runtime.getRuntime().exec() Allgemeine Java-Themen 10
lordcarlos Runtime exec und mplayer (linux) Allgemeine Java-Themen 11
C JApplet und Runtime.getRuntime().exec() Allgemeine Java-Themen 2
K Runtime.exec mit Timeout Allgemeine Java-Themen 5
0 Runtime.exec() VLC starten klappt nicht Allgemeine Java-Themen 9
G Runtime.exec - Prozess "mittendrin" "einfach Allgemeine Java-Themen 4
J Runtime.exec unter win vista? Allgemeine Java-Themen 10
M Probleme Runtime.getRuntime().exec(Start.cmd); Allgemeine Java-Themen 10
F Problem mit Runtime.exec() Allgemeine Java-Themen 8
M Runtime.exec unter Vista (Administrator Rechte) Allgemeine Java-Themen 2
K Probleme mit Runtime.getRuntime().exec Allgemeine Java-Themen 6
A Runtime.getRuntime().exec mit Warte auf Beendigung - Wie? Allgemeine Java-Themen 7
R Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 4
the[V]oid Ausführen von "javac" über Runtime.exec() Allgemeine Java-Themen 4
F Runtime.getRuntime().exec mit Linux und Leerzeichen Allgemeine Java-Themen 3
D runtime.exec --> Prozess hängt sich auf Allgemeine Java-Themen 7
B Probleme mit Runtime.getRuntime().exec("cmd.exe") Allgemeine Java-Themen 4
M Runtime.getRuntime().exec(txt_rsync_option.getText()); Allgemeine Java-Themen 12
M Rückgabewert von Runtime.getRuntime().exec() Allgemeine Java-Themen 2
S Runtime.exec() berechtigungen Allgemeine Java-Themen 5
S Runtime.exec und X Umgebung Allgemeine Java-Themen 2
F Shell-Programme per Runtime.exec() starten und mehr? Allgemeine Java-Themen 4
K Runtime.exec und DFÜ-Verbindung Allgemeine Java-Themen 5
P Copy mit Runtime.exec() unter Unix Allgemeine Java-Themen 4
D Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 14
L Runtime.getRuntime.exec() Allgemeine Java-Themen 7
T Probleme mit Runtime.exec in Jar File Allgemeine Java-Themen 2
M Runtime.exec unter Linux Allgemeine Java-Themen 11
X Problem mit Runtime.getRuntime().exec("cls"); Allgemeine Java-Themen 18
S Runtime.getRunTime().exec("jar cvf .) hängt sich auf Allgemeine Java-Themen 3
M Runtime.getRuntime().exec() - Fehler abfangen Allgemeine Java-Themen 5
S Runtime exec unter MacOS X will nicht "open pfad" Allgemeine Java-Themen 7
S dvbscan mit Runtime.getInstance().exec() ausführen ? Allgemeine Java-Themen 24
B Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 4
G Runtime.getRuntime().exec("cmd /c START") Allgemeine Java-Themen 3
M Runtime.exec() => java.io.exception: too many open files Allgemeine Java-Themen 10
M this application requires a java runtime environment 1.8.0 Allgemeine Java-Themen 2
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
J Verschiedene Runtime Versionen gleichzeitig? Allgemeine Java-Themen 12
K Threads Runtime und Process Probleme Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
J Probleme mit der Java-Runtime Allgemeine Java-Themen 10
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
W Threads Mit Thread und Runtime externe Programme öffnen Allgemeine Java-Themen 0
C Runtime Problem Allgemeine Java-Themen 1
P programm öffnen mit der runtime Allgemeine Java-Themen 9
W JavaDoc Runtime-Exceptions: Wie sinnvoll anzeigen? Allgemeine Java-Themen 14
P Runtime bzw. RAM-Auslastung eines Prozesses Allgemeine Java-Themen 9
M Befehl in Runtime ausführen der Eingabe benötigt Allgemeine Java-Themen 3
aze Jar ausführen über Runtime.execute funktioniert nicht Allgemeine Java-Themen 4
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
N Internet Explorer mit bestimter Java Runtime starten Allgemeine Java-Themen 2
S Runtime.getRuntime()... Allgemeine Java-Themen 6
S Rückgabewert runtime Allgemeine Java-Themen 11
martin82 Java Runtime Update >17 - SwingWorker Änderungen? Allgemeine Java-Themen 7
W java ohne runtime Allgemeine Java-Themen 2
G Runtime? Allgemeine Java-Themen 3
S Problem mit Runtime. Allgemeine Java-Themen 2
E Programm mit der Runtime ausführen Allgemeine Java-Themen 8
M Runtime & Exception Allgemeine Java-Themen 3
J ServiceInterface - Runtime() > jemand eine idee? Allgemeine Java-Themen 2
A Runtime oder ProcessBuilder exe starten Allgemeine Java-Themen 3
V Java-Programm vom USB-Stick ohne Runtime-Installation Allgemeine Java-Themen 18
W In Runtime Output schreiben Allgemeine Java-Themen 5
J Probiert mal bitte aus (Thread + Runtime) Allgemeine Java-Themen 10
A Installierte Runtime ermitteln Allgemeine Java-Themen 3
T ausführbares jar File mit integriertem Java Runtime 6+JOGL Allgemeine Java-Themen 7
W Runtime Error216 Runtime error 217 Allgemeine Java-Themen 6
B Runtime Verzeichniss wechseln Allgemeine Java-Themen 8
C Java SE Runtime 6 Update 1 - IE 7 und FF 2.0 - Allgemeine Java-Themen 6
G Programm wird von java cmd runtime nicht aufgerufen? Allgemeine Java-Themen 13
A Runtime Process bricht nicht ab! Allgemeine Java-Themen 7
C Rechte unter WinXP, MySQL-Server per Runtime herunterfahren? Allgemeine Java-Themen 6
G Java Runtime Verzeichnis ermitteln Allgemeine Java-Themen 3
9 J2SE Runtime Environment 5.0 Allgemeine Java-Themen 6
G Runtime.getRuntime() Allgemeine Java-Themen 10
S Programm starten mit Runtime aktuelles Verzeichnis wechseln Allgemeine Java-Themen 7
M exec() funktioniert nicht Allgemeine Java-Themen 1
R Exec. Jar läd Bilder nicht! Allgemeine Java-Themen 5
S exec( "cmd /c") aber Konsole soll offen bleiben Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben