You are not logged in.

Hogi

Trainee

  • "Hogi" is male
  • "Hogi" started this thread

Posts: 69

Date of registration: Oct 8th 2003

Location: Rinteln

1

Tuesday, July 10th 2007, 3:34pm

jvm options oder doch nur argumente für java.exe?

guten tag!

ich bin gegenwärtig dabei mit jni herumzusauen und es gibt anforderungen dass der jvm bestimmte optionen mitgegeben werden müssen (siehe hier: http://blogs.sun.com/watt/resource/jvm-options-list.html). nun hatte ich das problem, dass ganz bestimmte jvm-optionen (wie etwa "-showversion" oder "-splash") nicht von der jvm erkannt werden, was mich doch sehr wunderte, denn schließlich steht es so geschrieben, dass die java hotspot jvm (client und server) eben diese jvm-optionen angeblich unterstützen soll..

nach fleißiger aber erfolgsarmer recherche bin ich auf die idee gekommen, mir den sourcecode von java.exe anzusehen, und siehe da, einige der so genannten jvm-optionen werden überhaupt garnicht an die jvm geschickt, sondern gleich an ort und stelle von java.exe verarbeitet! wie soll ein entwickler denn bitteschön auf diesen abwegigen gedanken kommen? zumal diese argumente von java.exe überall als jvm-optionen bezeichnet werden...

ich bin jetzt also drauf und dran, teile der funktion von java.exe in meinen c-code einzubauen, aber schön ist das nicht. es wundert mich allerdings, dass dieses thema nirgends im netz diskutiert wird. ich hätte zumindest mal gerne eine liste, um welche sogenannten jvm-optionen es dabei geht, es macht jedenfalls keinen spass, mir das aus dem sourcecode von java.exe herauszuklamüsern.

ich wäre dankbar, falls mir jemand näheres zu dem thema sagen kann und ob ich mit meinem ergebnis richtig liege. ich wünschte ich könnte mir das nachprogrammieren von java.exe sparen, also könnte ich auch gut einen tipp gebrauchen, wie ich das vielleicht doch noch umgehen kann...

KreiS

Senior Schreiberling

  • "KreiS" is male

Posts: 701

Date of registration: Dec 17th 2001

Location: Hannover

Occupation: moep

2

Sunday, July 15th 2007, 8:25pm

ahoi,

zwar kann ich deinem Problem nicht so ganz folgen, dennoch hätte ich ne Frage. Welche Optionen sind denn bei jni nötig?
kaneda spring <-> ks <-> KreiS
"surrender is an option ...time to change everything" (ks '04)

Dakota-Indianer(Weisheit),"Wenn Du entdeckst, dass Du ein totes Pferd reitest, steig ab"

compost

Trainee

  • "compost" is male

Posts: 74

Date of registration: Dec 11th 2001

Location: Linden

3

Sunday, July 15th 2007, 8:35pm

Hi,

also 2 Sachen kann ich dazu bemerken. Eigentlich 3 :). Die erste ist, dass ich mir nicht vorstellen kann, dass angegebene Optionen von java.exe nicht erkannt werden. Aber wer weiss...

Die Option -splash ist erst am java 6 verfügbar. Vielleicht hast du java 5 vorliegen? Die Option -showversion funktioniert bei mir einwandfrei. Allerdings steht in der Beschreibung der Option "show version and CONTINUE". Also die Version wird zwar ausgegeben, aber danach erscheint auch die übliche Ausgabe als ob nichts an den Befehl übergeben wird. Die Option -version zeigt die Version an und stoppt.


Gruß Jens

Hogi

Trainee

  • "Hogi" is male
  • "Hogi" started this thread

Posts: 69

Date of registration: Oct 8th 2003

Location: Rinteln

4

Monday, July 16th 2007, 9:43pm

nun, ich fürchte es ist nicht ganz deutlich geworden, wo mein problem liegt. also: überall werden die sogenannten jvm-optionen beschrieben, als wären es argumente für die jvm. dem ist aber nicht so. wie aus dem quelltext von java.exe hervorgeht, werden einige dieser argumente (wie -splash und -showversion) in java.exe verarbeitet, und nur die übrigen (in teilweise angepasster form) an die jvm übergeben.

die java.exe startet also die jvm im wesentlichen auf die gleiche weise über jni, wie ich es in meinem programm auch tue. das heißt aber, dass eben die jvm-optionen, die ja in java.exe verarbeitet werden, natürlich nicht von der jvm selbst verstanden werden.

ich bin mittlerweile sehr skeptisch, dass es dafür eine einfache lösung gibt, also hätte ich wenigstens gerne eine dokumentation, welche jvm-optionen auf welche weise in java.exe verarbeitet oder modifiziert werden. das kann man zwar im quellltext von java.exe nachlesen, das ist aber recht mühsam.


a) bei java.exe:

(jvm-optionen) -> [java.exe] -> (teilmenge von jvm-optionen) -> [jvm]


b) bei mir (gegenwärtiger stand, funktioniert nicht):

(jvm-optionen) -> [meine.exe] -> (jvm-optionen) -> [jvm]


c) bei mir (so funktionierts, aber es gehen halt nicht alle jvm-optionen)

(teilmenge von jvm-optionen) -> [meine.exe] -> (teilmenge von jvm-optionen) -> [jvm]


d) was ich erreichen möchte, ohne java.exe nachzuprogrammieren:

(jvm-optionen) -> [meine.exe] -> (teilmenge von jvm-optionen) -> [jvm]


ich benutze java 6 und habe da auch alles richtig gesetzt...

man muss der jvm an und für sich keine jvm-optionen übergeben... ohne classpath dürfte es zwar eine etwas einseitige angelegenheit werden, aber ich wüsste jetzt nicht, dass das wirklich nicht klappt...