2010-09-27 18 views
6

जावा 1.5 या उससे भी अधिक के बाद, जावैक अन्य जार खोजने के लिए तीसरे पक्ष के जार के प्रकट होने की तलाश में है।क्या मैं अपने तीसरे पक्ष के जार के प्रकट होने से क्लास-पथ तक पहुंचने वाले जावैक को रोक सकता हूं?

  1. के रूप में जार फ़ाइलों का नाम बदला गया है, अब हम चेतावनी की बाढ़ मिल संकलन जब भी हम (-Xlint:-path साथ अक्षम की गईं जा सकता है)
  2. फ़ाइलें हम पर नहीं करना चाहते हैं: यह अवांछनीय दुष्प्रभाव के एक नंबर का कारण बनता है क्लासपाथ को वापस लाया जा रहा है, भले ही उन्हें किसी कारण से छोड़ दिया गया हो।
  3. इन सभी अतिरिक्त जारों को देखने के लिए निर्माण में अतिरिक्त समय लिया जा रहा है, इस सामान के समाधान के कारण हम वास्तव में नहीं चाहते हैं।

तो मैं सोच रहा था कि अगर कोई इसे अक्षम करने के लिए जादू आमंत्रण जानता है। यह मानते हुए कि सूर्य ने हमें एक और विशेषता के साथ नहीं जोड़ा जो हम नहीं चाहते थे और हमारे पास एक बार बंद नहीं हो सकता है।

+0

+1 मुझे नहीं पता था कि javac करता है। कोई विचार क्यों कोई इसे चाहेगा? मैं (किसी भी तरह) रनटाइम क्लासपाथ के लिए कुछ जादू की इच्छा को समझ सकता हूं, लेकिन निर्माण पथ के साथ गड़बड़ कर सकता हूं? – Thilo

+0

क्या एक्लिप्स कंपाइलर भी ऐसा करता है? आप इसके बजाय उस का उपयोग कर सकते हैं। – Thilo

+1

यहां बग (चर्चा के साथ) है जिसके कारण यह (IMHO बेवकूफ) सुविधा को जोड़ा जा सकता है: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4212732 – Archie

उत्तर

1

केवल नाम बदलने के बजाय, जार से अपमानजनक MANIFEST.MF प्रविष्टि को पट्टी करने के लिए बीएनडी या छाया का उपयोग करें। या चेहरे का लाभ उठाएं कि ये पथनाम अनिवार्य रूप से पूर्ण नहीं हैं। यदि आप 'i-have-a-ClassPath.jar' नामक जार को अपनी उपनिर्देशिका में ले जाते हैं, तो प्रकट वर्ग पथ प्रविष्टियां अपेक्षित स्थानों में इन अन्य जारों को ढूंढने में विफल हो जाएंगी। मुझे लगता है कि अगर आप पर्याप्त लिंट चालू करते हैं, तो भी यह चमक जाएगा।

2

यहाँ एक चींटी लक्ष्य प्रकट फ़ाइलों को संशोधित करने (चींटी-योगदान का उपयोग करता है)

<target name="util-modify-manifest" depends="build-classpath"> 
<for param="file"> 
    <fileset dir="${jars}" > 
     <include name="**/*.jar" /> 
    </fileset> 
    <sequential> 
     <jar jarfile="@{file}" destfile="@{file}" update="true"> 
      <manifest> 
       <attribute name="Class-Path" value="" /> 
       <attribute name="Export-Package" value="" /> 
      </manifest> 
     </jar> 
     <echo message="Manifest Replaced: @{file}" /> 
    </sequential> 
</for> 

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

  • कोई संबंधित समस्या नहीं^_^