Pergunta

Existe alguma maneira, de um programa Java compilado pelo GCJ, para descobrir o nome do executável que o usuário executou para iniciar o programa?

Em C, Argv [0] (de dentro principal) é o nome, mas em Java, a matriz args dada a Main contém apenas os argumentos da classe principal. Ao executar com uma linha de comando java normal, isso faz algum sentido, porque o executável sempre seria Java (ou java.exe).

Ao executar um programa Java que foi compilado pelo GCJ, no entanto, o nome do executável que o usuário executou pode ser uma informação útil. Idealmente, eu gostaria de encontrar esse nome sem recorrer a abordagens específicas da plataforma, como leitura /proc (e qualquer que seja o equivalente para o Windows), mas talvez isso não seja possível.

Foi útil?

Solução

Depois de muita pesquisa na pesquisa de código do Google, descobri que o nome do programa está escondido no gnu.gcj.progname propriedade. Programa de amostra:

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

Editado para adicionar: gnu.gcj.progname está documentado em libgcj Propriedades de tempo de execução Além disso, felizmente, isso não é apenas um detalhe de implementação interna.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top