Domanda

C'è un modo, dall'interno di un programma Java compilato da gcj, per scoprire il nome del file eseguibile Ran all'utente di avviare il programma?

In C, argv [0] (dall'interno principale) è il nome, ma in Java, la matrice args dato principale contiene solo gli argomenti alla classe principale. Quando si esegue con un normale riga di comando java, questo ha un senso, perché l'eseguibile sarebbe sempre java (o java.exe).

Quando si esegue un programma Java che è stato compilato da gcj, invece, il nome del file eseguibile, che l'utente potrebbe essere Ran informazioni utili. Idealmente mi piacerebbe trovare quel nome senza ricorrere a specifiche piattaforme si avvicina come la lettura / proc (e qualunque sia l'equivalente sarebbe per Windows), ma forse questo non è possibile.

È stato utile?

Soluzione

Dopo molte ricerche su Google Code Search, ho scoperto che il nome del programma è nascosto nella proprietà gnu.gcj.progname. Esempio di programma:

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

A cura di aggiungere: gnu.gcj.progname è documentata nel libgcj proprietà di runtime troppo, così fortunatamente questo non è solo un dettaglio di implementazione interna.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top