2010-03-29 17 views
13

जावा से शुरू की है, क्या एप्लिकेशन शुरू करने वाले सभी तर्कों के साथ पूर्ण कमांडलाइन प्राप्त करना संभव है?मैं कमांडलाइन कैसे प्राप्त करूं जिसने प्रक्रिया

System.getEnv() और System.getProperties() मूल्यों को शामिल नहीं करते हैं।

+2

क्या आपका मतलब jvm को दिए गए तर्क भी हैं? उस से संबंधित एक प्रश्न है http://stackoverflow.com/questions/1490869/how-to-get-vm-arguments-from-inside-of-java- appplication – LB40

उत्तर

12

कुछ का यह RuntimeMXBean, ManagementFactory.getRuntimeMXBean()

फोन करके प्राप्त से उपलब्ध है फिर आप, उदाहरण के लिए कॉल कर सकते हैं

javadocs जिसके लिए कहते हैं:

रिटर्न पारित कर दिया इनपुट तर्क जावा वर्चुअल मशीन में जिसमें मुख्य विधि के लिए तर्क शामिल नहीं है। जावा वर्चुअल मशीन पर कोई इनपुट तर्क नहीं होने पर यह विधि खाली सूची लौटाती है।

कुछ जावा आभासी मशीन कार्यान्वयन कई विभिन्न स्रोतों से इनपुट तर्क ले सकता है: उदाहरण के लिए, इस तरह के जावा का अर्थ आदेश, वातावरण चर, विन्यास फाइल, आदि

के रूप में अनुप्रयोग है कि जावा आभासी मशीन की शुरूआत से पारित तर्क

आमतौर पर, 'जावा' कमांड के लिए सभी कमांड लाइन विकल्प जावा वर्चुअल मशीन पर पास नहीं किए जाते हैं। इस प्रकार, लौटाए गए इनपुट तर्कों में सभी कमांड-लाइन विकल्प शामिल नहीं हो सकते हैं।

+2

मुझे लगता है कि यह शुद्ध जावा का उपयोग करके आप प्राप्त कर सकते हैं। – msandiford

+0

+1 कुछ नमूना कोड मुझे यह सही होगा !!! :) – OscarRyz

+0

@ स्टीफन डेन ... इस के प्रशंसक नहीं। प्रश्न की मेरी समझ कमांड लाइन प्राप्त करने के लिए थी (कहें कि 'ps -f' में कमांड स्ट्रिंग के साथ क्या दिखाता है। मैनुअल पेज कहता है, "_des में मुख्य विधि में तर्क शामिल नहीं हैं। _" अभी, मैं' मैं यह निर्धारित करने की कोशिश कर रहा हूं कि कोई अन्य प्रोग्राम 'मुख्य' पर गुजर रहा है जो मेरी कक्षा में दिखाई नहीं दे रहा है। – will

1

लिनक्स/यूनिक्स में संभव है जब आपको लगता है कि आदेश (एक खोल में चला) के उत्पादन में प्राप्त होना चाहिए

cat /proc/$PPID/cmdline 

लेकिन उस सब पर पोर्टेबल नहीं है और इसलिए जावा में नहीं किया जाना चाहिए .. ।

+0

ठीक है, धन्यवाद। यह ठीक है अगर यह पोर्टेबल नहीं है, हालांकि मुझे विंडोज़ पर भी काम करने की ज़रूरत है। – aksamit

+2

@aksamit - दूसरे शब्दों में, आपको इसे कम से कम लिनक्स और विंडोज के बीच पोर्टेबल होने की आवश्यकता है ... duh! @ जोहान्स - "इसलिए जावा में इस्तेमाल नहीं किया जाना चाहिए" बहुत मजबूत है। जावा में गैर-पोर्टेबल कोड लिखना पूरी तरह गलत नहीं है ... अगर परिस्थितियों की आवश्यकता होती है। –

+0

@ जोहान्स वीस: तो सूर्य जहां उनके दिमाग से बाहर था जब उन्होंने * Runtime.exec * को सही में डालने का फैसला किया? मेरा मतलब है, यह स्पष्ट रूप से "शुद्ध जावा देवताओं" को खुश करने के लिए भाषा से हटाया जाना चाहिए और इसे हटाया जाना चाहिए? या? – SyntaxT3rr0r

1

निम्न लिंक मदद मिल सकती है आप वहां तक ​​पहुंचने:

How to get command line arguments for a running process

get command-line of running processes

How to get a list of current open windows/process with Java?

बस एक नोट के रूप

:

विंडोज में आप Process Explorer by Sysinternals कि आप आदेश प्रक्रिया को खोलने के लिए इस्तेमाल किया लाइन से पता चलता है। प्रक्रिया पर राइट क्लिक करें और गुण चुनें ... आपको खोले गए विंडो में कमांड लाइन दिखाई देगी।

0

आप यह देखना चाहते हैं कि jps यह कैसे करता है। यह एक जावा प्रोग्राम है जो सभी जावा प्रक्रियाओं के लिए पूर्ण कमांड लाइन प्राप्त करने में सक्षम है, जिसमें मुख्य श्रेणी और जेवीएम विकल्पों के पूर्ण वर्ग नाम शामिल हैं।

0

एक विकल्प जिसे मैंने अतीत में क्रॉस-प्लेटफार्म-चमक बनाए रखने के लिए उपयोग किया है, कमांड लाइन को कमांड जारी करने से पहले पर्यावरण चर के रूप में सेट करना है।

1

एक वातावरण चर% ~ dp0 जो पूर्ण पथ

+1

ऑन ... कौन सा ओएस? – OscarRyz

+1

ओह .. मैं भूल गया कि यह विंडोज़ में है। यूएनसी पथ पर स्विच चलाने के लिए बहुत उपयोगी बैच फ़ाइल के लिए। उदाहरण के लिए यूएनसी पथ \\ सर्वर \ साझा करें \ folder1 \ runit.bat यदि बैच की पहली पंक्ति pushd% ~ dp0 है तो आपका वर्तमान पथ \\ सर्वर \ साझा \ folder1 \ – ggonsalv

+0

होगा उत्तर इस सवाल को क्यों नहीं मिला है, लेकिन यह जानना उपयोगी है। –

0

YAJSW पर एक नज़र (अभी तक एक और जावा सेवा आवरण) है देता है - यह (Win32 और लिनक्स सहित) विभिन्न OSes के लिए JNA-आधारित कार्यान्वयन है वास्तव में ऐसा करें ताकि यह एक चल रही प्रक्रिया के लिए कमांडलाइन को पकड़ सके और एक कॉन्फ़िगरेशन बना सके जो इसे किसी सेवा में लपेटता है। थोड़ा और जानकारी here

0

यदि आप ओएस के रूप में सौरलिस का उपयोग कर रहे हैं, तो "पर्ग" उपयोगिता देखें। आवश्यक सभी जानकारी मुद्रित करता है।

संबंधित मुद्दे