الاسم الثنائي في برنامج Java الذي جمعته GCJ
-
24-09-2019 - |
سؤال
هل هناك أي طريقة ، من داخل برنامج Java الذي جمعته GCJ ، لمعرفة اسم القابل للتنفيذ الذي قام المستخدم بتشغيله لبدء البرنامج؟
في C ، Argv [0] (من الداخل الرئيسي) هو الاسم ، ولكن في Java ، تحتوي صفيف Args المعطى إلى Main على الوسيطات فقط للطبقة الرئيسية. عند الجري مع سطر أوامر Java عادي ، يكون ذلك منطقيًا لأن القابل للتنفيذ سيكون دائمًا Java (أو Java.exe).
عند تشغيل برنامج Java الذي تم تجميعه بواسطة GCJ ، ومع ذلك ، فإن اسم القابل للتنفيذ الذي يديره المستخدم قد يكون معلومات مفيدة. من الناحية المثالية ، أود أن أجد هذا الاسم دون اللجوء إلى مناهج محددة من النظام الأساسي مثل القراءة /Proc (وأي ما يعادله لنظام التشغيل Windows) ، ولكن ربما هذا غير ممكن.
المحلول
بعد الكثير من البحث على بحث رمز Google ، اكتشفت أن اسم البرنامج مخبأ في gnu.gcj.progname
منشأه. برنامج العينة:
public class ProgName {
public static void main(String... args) {
System.out.println(System.getProperty("gnu.gcj.progname"));
}
}
تم تحريره لإضافة: gnu.gcj.progname
تم توثيقه في libgcj
خصائص وقت التشغيل أيضًا ، لحسن الحظ ، هذا ليس مجرد تفاصيل تنفيذ داخلية.