Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VM aus laufender Java-Anwendung starten(2.Versuch)

1 view
Skip to first unread message

Henry Müller

unread,
Mar 13, 2002, 7:11:38 AM3/13/02
to
Hallo NG,

wie kann aus einer laufenden Java-Anwendung
eine 2.VM gestartet werden.

Die 2. VM soll folgende Kriterien erfüllen:
-eine EIGENE KONSOLE haben.
-soll unabhängig von der aufrufenden Anwendung sein
d.h. sie soll weiterlaufen auch wenn der aufrufende
Process beendet wird.

Die Methode "Runtime.getRuntime().exec("java.exe");"
startet zwar eine neue VM in einem eigenen Process,
allerdings ohne eigene Konsole, außerdem wird der
Process bei Beendigung der aufrufenden Anwendung
unerwünschterweise auch beendet.

lässt sich "java.exe" evtl. über JNI aufrufen.(OS=Windows)

Paul Ebermann

unread,
Mar 13, 2002, 7:55:02 AM3/13/02
to
"Henry Müller" skribis:

Unter Windows kannst du mit "start" eine neue (unabhängig
laufende) Anwendung starten.

Runtime.getRuntime().exec("start java ...");

HTH
Paul

Michael Butscher

unread,
Mar 13, 2002, 10:07:31 AM3/13/02
to
"Henry Müller" wrote:

> Die Methode "Runtime.getRuntime().exec("java.exe");"
> startet zwar eine neue VM in einem eigenen Process,
> allerdings ohne eigene Konsole, außerdem wird der
> Process bei Beendigung der aufrufenden Anwendung
> unerwünschterweise auch beendet.
>
> lässt sich "java.exe" evtl. über JNI aufrufen.(OS=Windows)

Ja. Die Funktion CreateProcess aus der Windows API hilft einem da
weiter.


Michael

--
Homepage: http://www.bnhof.de/~michael.butscher

I saw a queue in the stack, throw it out and hope, it is'nt reentrant

Henry Müller

unread,
Mar 13, 2002, 12:49:51 PM3/13/02
to

> Unter Windows kannst du mit "start" eine neue (unabhängig
> laufende) Anwendung starten.
>
> Runtime.getRuntime().exec("start java ...");
>
> HTH
> Paul

Vielen Dank Paul,

wäre auch zu einfach gewesen.
Habe vor den, mit den erwähnten Einschränkungen funktionierenden Parameter
einfach "start" gesetzt, also:
Runtime.getRuntime().exec("start C:\...\java.exe -cp E:\EIS\server.jar ruwa.eis.server.AppSvr");
Hier der ErrorStackTrace:

java.io.IOException: CreateProcess: start C:\...\java.exe -cp E:\EIS\server.jar
ruwa.eis.server.AppSvr error=2
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process.<init>(Win32Process.java:66)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:551)
at java.lang.Runtime.exec(Runtime.java:418)
at java.lang.Runtime.exec(Runtime.java:361)
at java.lang.Runtime.exec(Runtime.java:325)


der Parameterwert "start..." ist nirgendwo dokumentiert.
Hast Du ein funktionierendes Beispiel oder einen Hinweis
auf eine entsprechende Doku?

Henry


Henry Müller

unread,
Mar 13, 2002, 5:16:07 PM3/13/02
to

> Ja. Die Funktion CreateProcess aus der Windows API hilft einem da
> weiter.
>
>
> Michael

hört sich gut an.
Der Name der dll wäre noch ganz nützlich.

Henry


Holger Jödicke

unread,
Mar 14, 2002, 6:17:59 AM3/14/02
to
Hallo

"Henry Müller" wrote:


>
>Paul Ebermann wrote:
> > Unter Windows kannst du mit "start" eine neue (unabhängig
> > laufende) Anwendung starten.
> >
> > Runtime.getRuntime().exec("start java ...");
> >

> wäre auch zu einfach gewesen.


> Habe vor den, mit den erwähnten Einschränkungen funktionierenden Parameter
> einfach "start" gesetzt, also:
> Runtime.getRuntime().exec("start C:\...\java.exe -cp E:\EIS\server.jar ruwa.eis.server.AppSvr");
> Hier der ErrorStackTrace:

> der Parameterwert "start..." ist nirgendwo dokumentiert.
> Hast Du ein funktionierendes Beispiel oder einen Hinweis
> auf eine entsprechende Doku?

ich denke mal das ist ein Shell Feature. Probier mal 'cmd /c start java
...' Als Doku ab ich hier folgendes zu start gefunden:
start ["Titel"] [/dPfad] [/i] [/min | /max] [/separate] [/low | /normal
| /high | /realtime] [/wait] [/b] [Befehl/Programm] [Parameter]...

Hojoe

--
Portal Software (Hamburg) GmbH | Tel: +49 (04106) 760-285
Ernst-Abbe-Straße 10 | Fax: +49 (04106) 760-199
25451 Quickborn, Germany | Holger....@portal.com
http://www.portal.com

Hendrik Lipka

unread,
Mar 14, 2002, 6:32:37 AM3/14/02
to
On Wed, 13 Mar 2002 23:16:07 +0100, "Henry Müller"
<xxxmu...@netcologne.de> wrote:

>Der Name der dll wäre noch ganz nützlich.

Die musst Du ohnehin selber basteln - CreateProcess wirst Du nicht
direkt aus Java heraus aufrufen koennen.
Also einfach eine Java-Klasse+DLL mit genau einer Methode schreiben,
die dann CreateProcess aufruft.

hli
--
Gewalt ist die letzte Zuflucht des Unfaehigen

Henry Müller

unread,
Mar 14, 2002, 5:03:07 PM3/14/02
to

> Die musst Du ohnehin selber basteln - CreateProcess wirst Du nicht
> direkt aus Java heraus aufrufen koennen.
> Also einfach eine Java-Klasse+DLL mit genau einer Methode schreiben,
> die dann CreateProcess aufruft.
>

Hallo Hendrik,

habe nur kurz das Tutorial zu JNI überflogen.
Wenn ich Dich richtig verstehe, ist es also grundsätzlich
nicht möglich, eine native Funktion aus der Windows-API
aufzurufen auch wenn ich deren *.dll und Signatur kenne
ohne eine eigene aufrufende *.dll mit entsprechender Funktion
zu schreiben.

Henry


Michael Butscher

unread,
Mar 15, 2002, 6:40:04 AM3/15/02
to
"Henry Müller" wrote:

> habe nur kurz das Tutorial zu JNI überflogen.
> Wenn ich Dich richtig verstehe, ist es also grundsätzlich
> nicht möglich, eine native Funktion aus der Windows-API
> aufzurufen auch wenn ich deren *.dll und Signatur kenne
> ohne eine eigene aufrufende *.dll mit entsprechender Funktion
> zu schreiben.

Genau das. Eine JNI-DLL muß genaue Vorgaben bezüglich Funktionsnamen
und verwendeter Parameter einhalten. Die Windows-DLLs tun das
natürlich nicht.

0 new messages