Compiler Infos anzeigen (wie System.getProperty(..))



  • Hallo,

    ich hoffe hier kann mir jemand helfen. habe auch nach langem googeln nichts verwertbares gefunden.

    Und zwar wäre es sehr schön, wenn ich im fertigen java Programm Informationen zum Benutzten Compiler und der Compiler Umgebung anzeigen lassen könnte.
    Ein Beispiel: Informationen zum System, auf dem der Code ausgeführt wird erhält man zum Beispeil durch System.getProperty("java.version").
    Nun möchte ich aber gerne auch die Compiler Umgebung angezeigt bekommen.
    Also: Kompiliert mit 1.4.2_04 ausgeführt auf 1.4.2_01
    [..] "Kompiliert mit " +??? +"ausgeführt auf " +System.getProperty("java.version") [..]

    Vielen Dank!! 🙂



  • Hi,

    es gibt zwar die Property "java.class.version" allerdings erhälts du damit nur die Version der Systemklassen.
    Es ist ja auch so das eine Anwendung auch aus Klassen bestehen kann die mit unterschiedlichen Compilerversionen (target s.u.) kompiliert wurden.
    Wenn du z.B. eine Anwendung schreibst die mit 1.4 compiliert wurde die aber auch ein package benutzt das mit 1.3 kompiliert wurde.
    Will damit sagen das du die Version des Bytecodes pro Klasse bestimmen kannst/sollst/musst.

    Kannst ja mal so eine Klasse mit einem Hex-Editor aufmachen.
    Das 6ste Byte ist die Bytecode Version.

    Das sind z.B. die Bytcodeversionen zu den unterschiedlichen VM-Versionen
    1.2 -> 46.0
    1.3 -> 47.0
    1.4 -> 48.0

    D.h. wenn das 6ste Byte einen Hexwert von 30 hat dann ist es mit 1.4 compiliert worden, allerdings mit "-target 1.4". Standardmäßig wird es 1.2 kompatibel sein also eine 46 (2e) drin stehen.

    Lange Rede kurzer Sinn, die Informationen die du haben willst sind so ansich nirgends abgelegt, daher auch nicht ermittelbar.
    Du kannst maximal pro Klasse herausfinden mit welchem target dein Quellcode kompiliert wurde.

    bis dänn, O'Dog




Anmelden zum Antworten