Pregunta

¿Hay alguna manera, desde dentro de un programa Java compilado por gcj, para averiguar el nombre del ejecutable corrió el usuario para iniciar el programa?

En C, argv [0] (desde el interior principal) es el nombre, pero en Java, la args matriz dada a principal contiene sólo los argumentos de la clase principal. Cuando se ejecuta con una línea de comandos java normal, que tiene sentido porque el ejecutable siempre sería java (o java.exe).

Cuando se ejecuta un programa Java que ha sido compilado por gcj, sin embargo, el nombre del ejecutable que la RAN usuario podría ser útil la información. Lo ideal sería encontrar ese nombre sin recurrir a la plataforma específica se acerca como leer / proc (y cualquiera que sea el equivalente sería para Windows), pero tal vez eso no es posible.

¿Fue útil?

Solución

Después de mucho buscar en Google Code Search, he descubierto que el nombre del programa se escondió en la propiedad gnu.gcj.progname. Programa de ejemplo:

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

Editado para añadir: gnu.gcj.progname se documenta en libgcj Propiedades de ejecución también, así que afortunadamente esto no es sólo un detalle de implementación interna.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top