1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

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

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Skeeve, 04.06.08.

  1. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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?
     
  2. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Gelöst (so halb). Man muß auch richtig lesen. Apple schreibt
    [Quelle…]

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

    mpete Gast

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

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    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.
     
  5. mpete

    mpete Gast

    Sorry ich meinte

    System.getProperty("user.home")

    aber für Deinen Anwendungsfall eh wurscht.

    Gruß,
    Matthias
     

Diese Seite empfehlen