Binary Namen in Java-Programm von gcj zusammengestellt
-
24-09-2019 - |
Frage
Gibt es eine Möglichkeit, aus einem Java-Programm von gcj zusammengestellt, um den Namen der ausführbaren Datei des Benutzer läuft das Programm starten herauszufinden?
In C, argv [0] (von innen Haupt) ist der Name, aber in Java, der args Array Haupt gegeben enthält nur die Argumente die Hauptklasse. Wenn es mit einer normalen Java-Befehlszeile ausgeführt wird, das macht einen Sinn, weil die ausführbare Datei immer Java (oder java.exe) sein würde.
Wenn ein Java-Programm ausgeführt wird, die durch gcj kompiliert wurde, jedoch der Name der ausführbaren Datei, die der Benutzer RAN könnte nützliche Informationen sein. Im Idealfall würde ich ohne diesen Namen finden wie auf plattformspezifische greifen Ansätze wie das Lesen / proc (und was auch immer das Äquivalent für Windows wäre), aber vielleicht ist das nicht möglich.
Lösung
Nach langer Suche auf Google Code Search, habe ich entdeckt, dass der Programmname in der gnu.gcj.progname
Eigenschaft gebunkert wird. Beispielprogramm:
public class ProgName {
public static void main(String... args) {
System.out.println(System.getProperty("gnu.gcj.progname"));
}
}
Edited hinzufügen: gnu.gcj.progname
ist dokumentiert in libgcj
Runtime-Eigenschaften zu, so zum Glück dies nicht nur eine interne Implementierung Detail.