OS X Java .app Bundle kann keine anderen Apps öffnen?

Ich habe eine Java-SWT-Anwendung für OS X geschrieben, sie als .jar exportiert und in .app gebündelt. Alles funktioniert wie erwartet, bis auf einen kritischen Punkt in meiner App. Dazu müssen andere Apps geöffnet werden.

Ich habe es versuchtRuntime.exec(); ebenso gut wieProcessBuilder um dies zu tun, rufe das @ aopen Befehl auf den anderen Apps, die ich zum Starten benötigen. Dies funktioniert perfekt in Eclipse oder wenn ich meine exportierte .jar über Terminal starte. Es funktioniert jedoch nicht, wenn Sie mit einem Doppelklick auf die .app starten.

Ich frage mich, ob dies ein Fehler meinerseits oder eine Einschränkung durch Java oder OS X ist. Da Mac-Apps in einer Sandbox gespeichert sind (soweit ich weiß), könnte dies der Grund sein, warum Sie @ anrufeopen aus einer App heraus macht nichts?

Ich habe die benötigte App auf zwei Arten geöffnet. Es ist ein Steam-Spiel, wird aber auch im Einzelhandel angeboten, sodass es entweder über die App selbst oder über das @ gestartet werden kansteam:// Protokoll. In meinem Code habe ich Folgendes versucht:

ProcessBuilder pb = new ProcessBuilder("open", "steam://rungameid/57300//");
pb.start();
ProcessBuilder pb = new ProcessBuilder("open", appDir);
pb.start();

appDir ist eine Zeichenfolge, die einen Pfad zum .app-Bundle enthält, das ich starten möchte.

Haben Sie eine Idee, warum dies bei einem Mac-Anwendungspaket fehlschlägt, aber bei Eclipse / Jar problemlos funktioniert? Das Ausführen der App mit der Konsole (über das Bash-Skript im Bundle) gibt keine Fehler zurück. Daher scheint es mir, dass Java den Befehl gut ausführt, aber dass OS X ihn möglicherweise ignorier

Ich habe auch versucht, auf Google danach zu suchen, aber es scheint vielleicht sehr ungewöhnlich oder nur sehr spezifisch zu sein, und ich konnte nichts finden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage