Двоичное имя в Java-программе, скомпилированной gcj - PullRequest
1 голос
/ 05 марта 2010

Есть ли какой-нибудь способ из программы Java, скомпилированной gcj, узнать имя исполняемого файла, который пользователь запустил для запуска программы?

В C argv [0] (изнутри main) - это имя, но в Java массив args, переданный main, содержит только аргументы основного класса. При запуске с обычной командной строкой Java это имеет некоторый смысл, поскольку исполняемым файлом всегда будет java (или java.exe).

Однако при запуске Java-программы, скомпилированной gcj, имя исполняемого файла, которое запускал пользователь, может быть полезной информацией. В идеале я хотел бы найти это имя, не прибегая к конкретным подходам к платформе, таким как read / proc (и тому подобное, что будет для Windows), но, возможно, это невозможно.

1 Ответ

6 голосов
/ 05 марта 2010

После долгих поисков в Google Code Search я обнаружил, что имя программы спрятано в свойстве gnu.gcj.progname. Пример программы:

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

Отредактировано для добавления: gnu.gcj.progname задокументировано в libgcj Свойства времени выполнения , так что, к счастью, это не просто внутренняя деталь реализации.

...