سؤال

هل هناك أي طريقة ، من داخل برنامج 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 خصائص وقت التشغيل أيضًا ، لحسن الحظ ، هذا ليس مجرد تفاصيل تنفيذ داخلية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top