J'ai écrit une application Java que je veux distribuer sous forme de bundle d'application macOS. L'application doit exécuter une application en ligne de commande qui fait également partie du bundle. Le bundle est correctement signé (vérifié en utilisant la commande codesign) et le runtime renforcé est activé.
Je suis capable de lancer l'application, mais ensuite l'application échoue à exécuter l'application en ligne de commande incluse.
Le code utilisé pour exécuter l'application en ligne de commande :
Runtime.getRuntime().exec("/chemin/vers/le/bundle/Contenu/cli/monApplicationEnLigneDeCommande");
Le code fonctionne bien lorsque je signe le bundle sans activer le runtime renforcé. Une fois que j'active le runtime renforcé, j'obtiens l'exception suivante :
Impossible d'exécuter le programme "monApplicationEnLigneDeCommande" : erreur=0, posix_spawn a échoué
Qu'est-ce que je fais de mal ? Est-il même possible de générer des processus enfants à partir d'une application en runtime renforcé ?
La version du runtime Java que j'utilise est AdoptOpenJDK (build 11.0.4+11). L'application n'est pas sandboxée. Les droits que j'ai utilisés lors de la signature du bundle étaient
com.apple.security.cs.allow-jit
com.apple.security.cs.allow-unsigned-executable-memory
com.apple.security.cs.disable-executable-page-protection
com.apple.security.cs.disable-library-validation
com.apple.security.cs.allow-dyld-environment-variables
com.apple.security.automation.apple-events
0 votes
J'ai ajouté les informations d'autorisation dans mon post. Le chemin vers le binaire est correct, si je signe le bundle sans utiliser l'option d'exécution renforcée, le binaire peut être exécuté sans problème. Ce n'est que lorsque j'ajoute l'option d'exécution renforcée que l'exécution échoue.