Question

Est-il possible, à partir d'un programme Java compilé par gcj, pour trouver le nom de l'exécutable de l'utilisateur couru pour démarrer le programme?

C, argv [0] (à l'intérieur principal) est le nom, mais en Java, le tableau args donnée principale ne contient que les arguments de la classe principale. Lors de l'exécution d'une ligne de commande java normale, cela fait un certain sens, car l'exécutable serait toujours java (ou java.exe).

Lors de l'exécution d'un programme Java qui a été compilé par gcj, cependant, le nom de l'exécutable que le RAN utilisateur peut-être des informations utiles. Idéalement, je voudrais trouver ce nom sans avoir recours à la plate-forme des approches spécifiques comme la lecture / proc (et quel que soit l'équivalent serait pour Windows), mais peut-être cela est impossible.

Était-ce utile?

La solution

Après beaucoup de recherches sur Google Recherche de code, j'ai découvert que le nom du programme est planqué dans la propriété gnu.gcj.progname. Exemple de programme:

public class ProgName {
    public static void main(String... args) {
        System.out.println(System.getProperty("gnu.gcj.progname"));
    }
}

Sous la direction d'ajouter: gnu.gcj.progname est documentée dans libgcj Propriétés Runtime aussi, donc heureusement, ce n'est pas seulement un détail de mise en œuvre interne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top