কিছু ক্ষেত্রে কোনও প্রোগ্রাম বিভিন্ন উপায়ে চালানো যেতে পারে এবং কীভাবে ডাকা হয় তার উপর বিভিন্ন আচরণ প্রদর্শন করা যায়। আপনি যদি কল vimকরেন তবে viএটি একটি সামঞ্জস্যতা মোডে চলে। কখনও কখনও এটি বিভিন্ন সম্পর্কিত প্রোগ্রামগুলির একটি সংস্করণ বজায় রাখার চেষ্টা করা হয় - উদাহরণস্বরূপ mailqএবং newaliasesঅনেকগুলি ইউনিক্স সিস্টেমে একটি লিঙ্ক হয় sendmailযাতে এই প্রোগ্রামগুলি সিঙ্কে থাকে)
জাভা প্রোগ্রামগুলি সাধারণত:
% java -jar foo.jar আরগস
% java Foo আরগস
প্রথম সংস্করণটি যেখানে আপনার একটি ম্যানিফেস্ট ফাইল রয়েছে যা মূল শ্রেণিকে নির্দেশ করে, দ্বিতীয় সংস্করণটি Fooশ্রেণীর পথে পাওয়া শ্রেণিতে মূল পদ্ধতিটি চালায় ।
জাভা জন্য উপস্থাপিত তথ্য হয় জার পথ বা শ্রেণীর নাম চাওয়া হয়।
জারটির অবস্থানটি কোডের কিছু হওয়ার জন্য যথেষ্ট গুরুত্বপূর্ণ নয় (এবং এটি প্রকৃত অনুমানের অংশ ছিল না)। একটি জারকে সত্যিকার অর্থে যে কোনও নাম দেওয়া যেতে পারে, এবং প্রায়শই সংস্করণ সংখ্যা অন্তর্ভুক্ত থাকে। আরও কী, ক্লাসটি এমনকি একটি জজারেও সংরক্ষণ করা হয়েছিল তার কোনও গ্যারান্টি নেই (এটি উত্তোলন করা যেতে পারে)।
জাভা অ্যাপ্লিকেশনটি চাওয়ার সাথে -jarপ্রবেশ করার একমাত্র উপায় রয়েছে - ম্যানিফেস্টে সংজ্ঞায়িত ক্লাস। এমন কোনও নামকরণও করা যায় না যা করা যায়।
শ্রেণীর নামের সাথে এটি চাওয়ার অন্য বিকল্পটি সরাসরি এক্সিকিউশন ইউনিটকে নির্দেশ করে। আরও, এটির নামকরণ করা যাবে না গুণ - এটি আপনার Bar.classপক্ষে কোড হতে পারে না class Fooএটি ঠিক সেভাবে কাজ করে না।
এটি দেখানো উচিত যে argv[0]জাভা অ্যাপ্লিকেশনটিতে সি অর্থে তথ্য স্থান দেওয়ার সত্যিকার অর্থে কোনও বক্তব্য নেই - এটি হয় javaঅর্থহীন এবং স্বেচ্ছাসেবক হতে চলেছে , বা যে শ্রেণীর নামটি আহ্বান করা হচ্ছে তার নাম হবে (যে আপনি ইতিমধ্যে কোডটি কার্যকর করছেন) এর (আপনি getClass().getEnclosingClass().getName()মরিয়া হলে এমন কিছু করতে পারেন ...))।
এখানে একটি বক্তব্য রয়েছে, আপনি একটি .jar বা শ্রেণীর পথে ক্লাসে একাধিক প্রধান পদ্ধতি সংজ্ঞায়িত করতে পারেন। এবং আপনি তাদেরকে অন্যরকমভাবে আচরণ করতে পারেন ঠিক এমনভাবে যদি বিবরণী argv[0]ছিল তবে যা ছিল তার উপর ভিত্তি করে বিবৃতি দেওয়া।
আমার অতীতে কোড সমতুল্য ছিল java -cp Foo.jar com.me.foo.Testযা Testক্লাসের মূল পদ্ধতিটি ম্যানিফেস্টে সংজ্ঞায়িত সংজ্ঞায়িত পদ্ধতির পরিবর্তে পরিবর্তিত হয়েছিল।
foo.exe।