"Michael König" schrieb
[PDF Dokument]
> Nach Erstellung möchte ich das Dokument auch anzeigen lassen. Dazu verwende
> ich das folgende Kommando
>
> Process theProcess =
> Runtime.getRuntime().exec("start " +
> theFile.getAbsolutePath()+"");
>
> Dabei ist theFile das eben erstellt Dokument.
>
> Bedauerlichweise bekomme ich jetzt eine IOException
>
> java.io.IOException: CreateProcess: start D:\temp\Nachdruck55657.pdf error=2
> at java.lang.Win32Process.create(Native Method)
Du versuchst, den Befehl "start" aufzurufen. Das ist
aber kein Prozess des Betriebssystems, sondern eine
Anweisung, die von der Shell (cmd.exe bzw. command.com)
interpretiert wird. Die lässt sich nicht direkt starten.
Du musst also erst cmd.exe aufrufen, und zwar mit dem
Schalter /c, also
Runtime.getRuntime().exec("cmd.exe /c start " + ...
--
Grüße,
Matthias Lippmann
www.lippmannsoft.de
Ach ja, ich arbeite unter WinXP Home mit Java 1.4.2_06 und Eclipse 3.0.
Nach Erstellung möchte ich das Dokument auch anzeigen lassen. Dazu verwende
ich das folgende Kommando
Process theProcess =
Runtime.getRuntime().exec("start " +
theFile.getAbsolutePath()+"");
Dabei ist theFile das eben erstellt Dokument.
Bedauerlichweise bekomme ich jetzt eine IOException
java.io.IOException: CreateProcess: start D:\temp\Nachdruck55657.pdf error=2
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process.<init>(Unknown Source)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at
de.koenig.rechnung.persistenzObjekte.Rechnungsdokument.readDokumentFromDB(Rechnungsdokument.java:245)
dabei wird das Dokument in der Methode readDokumentFromDB zusammengebaut,
dort steht der oben angegebene Aufruf.
Wenn ich das Dokument durch doppelklick zu öffnen versuche, startet der
Acrobat Reader wie gewünscht und das Dokument
wird problemlos angezeigt.
Hat jemand eine Idee, was sich hinter error=2 verbergebn könnte?
Auch wenn ich das Kommando "start D:\temp\Nachdruck55657.pdf " in einer
CMD-Konsole aufzurufen versuch, gibt es keine
Probleme, sondern nur ein geöffnetes Dokument.
Für Tipps dankbar,
Michael
> Runtime.getRuntime().exec("cmd.exe /c start " + ...
Und wenn du das Problem mit "cmd.exe" oder "command.com" vermeiden
möchtest kannst du dir http://jdic.dev.java.net anschauen - da gibt es
dann ein "Desktop.open(datei)" welches eigentlich wohl auch unter Win9x
funktionieren sollte (hoffe ich jetzt mal - sicherheitshalber in der
Doku nachschauen, Win9x habe ich nicht zum ausprobieren).
error=2 heisst übrigens (grob in Windows-Sprache übersetzt) "Befehl oder
Datei nicht gefunden" (falls das noch jemanden interessiert)
Nico
Zumindest Acrobat5 hat auch eine Kommandozeilenfunktion:
D:\Adobe\Acrobat.exe c:\Eigene Dokumente\userbla\xyz.pdf
öffnet das Dokument xyz.pdf
Teste das einfach mal mit Deiner Acrobat(Reader)-Version, somit könntest
Du die Kommando-Zeile übergehen.
Gruß
Alexander
Das hat mich gewundert und ich habs bei meinem Win2000-Rechner probiert.
Hier funktioniert das nicht! Es wird nur eine zweite Shell geöffnet, was
zu erwarten war.
Wenn das bei dir klappt, ist es eine WinXP-Eigenschaft. Du verlierst bei
Verwendung dieser Geschichte den Vorteil der "Platformübergreifenden
Programmierung". Bei Linux/Unix funktioniert das sowieso nicht und jetzt
programierst du etwas, was nur bei WinXP funktioniert und evtl. bei
anderen "Windossen" nicht.
Gruss
Dieter
durch dein vorhaben verlierst du ja (fast) alles an Portabilität was
Java zu bieten hat. Wenn es eine reine XP Anwendung sein soll, dann kann
man nichts gegen sagen.
Aber ich denke, die meisten Leute hier interessiert es schon, wei man
Programme schreibt, die in der gleichen Version auch auf einem Linux laufen.
Ich weiss jetzt nicht genau, was du für eine Anwendung entwickelst, und
ob das für dich zutreffend sein wird. In der "javax.jnlp.BasicService"
gibt es eine Methode showDocument, damit kannst du eine URI im Browser
darstellen. Da sowohl unter Linux, als auch unter Windows, die Brwoser
einen PDF Plugin besitzten, sollten meiner Meinung nach die Dokumente
auch angezeigt werden.
Vielleicht bringt dich das ja weiter, lass es wissen.
Gruß
Alex Tugarev
Hallo,
sorry, stimmt, mit den Anführungszeichen startet in der Tat nur eine zweite
Shell. Wenn man die Anführungszeichen wegläßt, startet Acrobat.
Der Grund, weshalb ich nicht direkt Acrobat starte (siehe Antwort von
Alexander Neid),
war der Versuch, etwas Installationsunabhängiger zu sein. Mit dem Kommando
start wollte ich
es XP überlassen, welches Programm nun wirklich gestartet wird.
In der Tat ist alles an meiner Anwendung (ausser derm Anzeigen)
plattformuinabhängig, insofern
würde mich in der Tat interessieren, ob es eine Möglichkeit gibt, den für
die jeweilige Plattform und
Installation für PDF zuständigen Viewer zu starten.
Bevor mich jetzt jemand auf den Windows-Pfad im Aufruf aufmerksam macht, der
wurde von Java erstellt
durch das Kommando theFile.getAbsolutePath().
Gruß,
Michael
Hm, ein vielleicht gangbarer Weg ist folgender (nicht getestet):
-Aus dem File den entsprechenden URI rausziehen (java.io.File#toUri())
-Den systemweiten Standardbrowser rauskriegen, der dann hoffentlich ein
Adobe-Plugin spendiert bekommen hat (kann da wer helfen?).
-Diesem Browser kann man nun den URI übergeben und das Dokument sollte
sich öffnen.
Gruss
Dieter