मैं एक ही समय में --classpath
और --module-path
विकल्पों का उपयोग कर विश्वास करते हैं अवैध नहीं है। वर्तमान निर्देशिका में डिफ़ॉल्ट को स्पष्ट रूप से क्लासपाथ निर्दिष्ट नहीं करते समय भी दोनों का उपयोग करना संभव है। javac -help
संदेश से
विवरण और javac tools docs -
--module-path <path>, -p <path>
निर्दिष्ट करें जहां आवेदन मॉड्यूल को खोजने के लिए
--class-path <path>, -classpath <path>, -cp <path>
निर्दिष्ट करें जहां उपयोगकर्ता वर्ग फ़ाइलों और एनोटेशन प्रोसेसर
तो लगता है --class-path
, -classpath
, या -cp
निर्दिष्ट नहीं हैं, तो उपयोगकर्ता कक्षा पथ वर्तमान निर्देशिका है।
संपादित: @MouseEvent के लिए धन्यवाद, मैं शायद बाहर भाग सवाल में याद किया था
लेकिन अगर उन्हें स्वत: मॉड्यूल नहीं बनाते हैं और सिर्फ निर्दिष्ट - क्लास-पथ कुछ .jar - मॉड्यूल-पथ के ठीक आगे, फिर जावैक क्लैपथ को अनदेखा करता है और "पैकेज yyy नहीं मिला" और अन्य "नहीं मिला" त्रुटियां फेंकता है।
आप उन्हें स्वत: नहीं बनाते हैं, यह एक Module System's unnamed module के रूप में देखा जाता है और -
एक नामित मॉड्यूल नहीं, वास्तव में, यहां तक कि अनाम मॉड्यूल ऊपर निर्भर करना घोषणा कर सकते हैं। यह प्रतिबंध जानबूझकर है, क्योंकि क्लास पथ की मनमानी सामग्री पर निर्भर करने के लिए मॉड्यूल नामित करने की अनुमति विश्वसनीय कॉन्फ़िगरेशन असंभव बनाती है।
इसके अलावा, अनाम मॉड्यूल निर्यात अपने संकुल के सभी इसलिए एक स्वत: मॉड्यूल में कोड भी सार्वजनिक प्रकार classpath से लोड उपयोग करने में सक्षम हो जाएगा।
लेकिन एक स्वचालित मॉड्यूल जो क्लासपाथ से प्रकारों का उपयोग करता है, उस प्रकार को स्पष्ट मॉड्यूल पर प्रदर्शित नहीं करना चाहिए जो पर निर्भर करता है, क्योंकि स्पष्ट मॉड्यूल अज्ञात मॉड्यूल पर निर्भरता घोषित नहीं कर सकते हैं।
स्पष्ट मॉड्यूल com.foo.app
में कोड एक सार्वजनिक प्रकार com.foo.bar
में , जैसे को संदर्भित करता है, और उस प्रकार के हस्ताक्षर, तो वर्ग पथ पर जार फ़ाइलों को अभी भी से एक में एक प्रकार को संदर्भित करता है, तो com.foo.app
com.foo.app
के बाद से उस प्रकार तक पहुंचने में सक्षम नहीं होगा, नामित मॉड्यूल पर निर्भर नहीं हो सकता है।
इस वर्ग के रास्ते पर प्रासंगिक JAR फ़ाइल के रूप में एक स्वत: मॉड्यूल के रूप में com.foo.app
इलाज अस्थायी रूप से इतना है कि अपने कोड वर्ग पथ से प्रकार का उपयोग कर सकते, जब तक, द्वारा ठीक किया जा सकता है एक स्वचालित मॉड्यूल के रूप में इलाज किया जा सकता या एक स्पष्ट मॉड्यूल में परिवर्तित।
दो मिश्रण करना संभव है, क्या आप एक न्यूनतम उदाहरण साझा कर सकते हैं जिसे हम सत्यापित कर सकते हैं? –
* मैं समझ सकता हूं कि - क्लास-पथ और - मॉड्यूल-पथ का उपयोग उसी (संकलन) समय पर अवैध है, * ऐसा क्यों है? – nullpointer
मिक्सिंग बिल्कुल कानूनी है।हालांकि, मॉड्यूलर जार क्लासपाथ पर गैर-मॉड्यूलर जार का संदर्भ नहीं दे सकते हैं। स्वचालित मॉड्यूल (मॉड्यूलपैथ पर गैर-मॉड्यूलर जार) पुल के रूप में कार्य करते हैं: मॉड्यूलर जार _can_ उन्हें संदर्भित करते हैं, और स्वचालित मॉड्यूल क्लासपाथ पढ़ सकते हैं। –