• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Wie bekomme ich Parameter mit Leerzeichen in Info.plists Java/Arguments

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Wenn ich mit dem Jar Bundler (Macintosh HD ➣ Developer ➣ Applications ➣ Java Tools ➣ Jar Bundler.app) eine Anwendung erstelle und dort bei den »Arguments« etwas angebe, dann will es mir nicht gelingen, Argumente zu übergeben, die Leerzeichen enthalten.

Beim Kommandozeilenaufruf hat man ja die Wahl:
  • java -jar EchoParam.jar "a b"
  • java -jar EchoParam.jar 'a b'
  • java -jar EchoParam.jar a\ b
In jedem Fall bekommt man dort einen Parameter a b.

Egal, welche der Variante ich für die Arguments wähle, ich erhalte immer 2 Argumente:
  • "a b"
    1. "a
    2. b"
  • 'a b'
    1. 'a
    2. b'
  • a\ b
    1. a\
    2. b

Ist das nicht ziemlich banane? Wie kann ich OS X davon überzeugen, daß das Leerzeichen zum Argument gehört.

Achja! Ausprobiert habe ich auch noch "+", "%20", " " und " ", die letzteren beiden sogar durch direktes Editieren der Info.plist. Nichts hat geholfen.

Weiß hier jemand Rat?
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Gelöst (so halb). Man muß auch richtig lesen. Apple schreibt
Arguments
A string or array of strings
[Quelle…]

Was mir noch fehlt ist, zur Laufzeit hier das Homedirectory hinein zu bekommen. $HOME tut es nicht und auch nicht ~.
 

mpete

Gast
Was mir noch fehlt ist, zur Laufzeit hier das Homedirectory hinein zu bekommen. $HOME tut es nicht und auch nicht ~.

System.getEnv("user.home"); müsste eigentlich das Home-Verzeichnis zurückgeben
oder brauchst Du das Homeverzeichnis wirklich in den Arguments ?
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
System.getEnv("user.home"); müsste eigentlich das Home-Verzeichnis zurückgeben
System.getenv('HOME');

Das Problem ist einfach, daß ich den Source nicht verändern will bzw. in manchen Fällen auch nicht verändern kann.

Und selbst wenn, nutzt es doch nichts. Schließlich weiß das Programm ja nicht, ob es über den JarBundler, bzw. über JavaApplicationStub oder direkt aufgerufen wurde.

Wenn es direkt aufgerufen wurde, dann ist $HOME bereits ausgewertet und das Programm bekommt es nicht zu sehen, muß also gar nichts tun. Im Gegenteil! Wenn jetzt ein "$HOME" in irgendeinem String auftacht, dann war das dort wohl beabsichtigt.

Wurde es hingegen über JavaApplicationStub aufgerufen, dann hat die Shell noch nicht die $-Variablen ausgewertet, und das Programm müßte es tun.

Da aber das Programm das nun nicht weiß, kann es auch die Entscheidung nicht treffen, ob ein gefundenes $HOME auszuwerten ist, oder nicht.

Ich habe das nun so gelöst, daß ich eine eigene Launcher Klasse geschrieben habe, die man universell für Programme verwenden kann, die über JavaApplicationStub aufgerufen werden.

Finden kann man sie hier, hier und hier.
 

mpete

Gast
Sorry ich meinte

System.getProperty("user.home")

aber für Deinen Anwendungsfall eh wurscht.

Gruß,
Matthias