मान लें कि मेरे पास दो वर्ग (बॉब और टॉम) हैं जैसे कि बॉब टॉम का उपयोग करता है, लेकिन टॉम को बॉब की आवश्यकता नहीं होती है। इन दोनों फाइलें एक ही निर्देशिका संरचना में स्थित हैं।क्लासपाथ में कक्षा मौजूद होने पर मैं अंतर्निहित जावा संकलन को कैसे रोकूं?
public class Bob {
public static void main(String[] args) {
System.out.println(Tom.MESSAGE);
}
}
public class Tom {
public static String MESSAGE = "Hello World";
}
अगर मैं ठेठ फैशन में बॉब संकलित करने के लिए प्रयास करते हैं, मैं इसे परोक्ष Tom.java
को संकलित करने के रूप में अच्छी तरह के बाद से यह Bob.java
की निर्भरता के रूप में मान्यता प्राप्त है प्राप्त कर सकते हैं। यह बहुत अच्छा काम करता है।
लेकिन अब मान लें कि मैं टॉम को एक जेएआर फ़ाइल में रखना चाहता हूं। तो मैं Tom.java
बनाता हूं और परिणामों को एक जेएआर फ़ाइल में डालता हूं: libTom.jar। अब मैं libTom.jar
पर पॉइंटिंग क्लासपाथ के साथ संकलित हूं। दुर्भाग्यवश, कंपाइलर Tom.java
फ़ाइल देखता है और इसे libTom.jar
में कक्षा का उपयोग करने के बजाय संकलित करने का कारण बनता है। कक्षा क्लासपाथ में मिली है तो Tom.java
के अंतर्निहित निर्माण को छोड़ने के लिए संकलक प्राप्त करने का कोई तरीका है?
मुझे पता है कि यह उदाहरण काफी हद तक विकसित है। बाकी आश्वासन दिया कि इस मुद्दे से घिरा एक और जटिल, कम संकुचित उपयोग-मामला है। धन्यवाद।
हालांकि मैंने इसका उपयोग नहीं किया है, क्या आपने javac के लिए "सरल" ध्वज की कोशिश की है? सहायता आउटपुट के अनुसार: "-इम्प्लिट: {none, class} निर्दिष्ट करें कि निहित संदर्भित फ़ाइलों के लिए क्लास फाइलें उत्पन्न करना है या नहीं, जो आपको पसंद है। –
ऐसा क्यों नहीं है? @SteveB। – 11684