2009-04-01 17 views
9

मेरे पास एक जावा प्रोजेक्ट है जिसमें वर्तमान में इसकी पुस्तकालय निर्देशिका में बहुत सारे JAR हैं, जो इमारत के दौरान परिणामी पैकेज में शामिल हैं। हालांकि, मुझे पता है कि इनमें से कुछ libs परियोजना में कभी संदर्भित नहीं हैं।जावा प्रोजेक्ट में अनावश्यक निर्भरताओं को हटाने के लिए टूल

क्या कोई ऐसा उपकरण है जो प्रोजेक्ट के संदर्भ में लिबियों की खोज कर सकता है? मुझे लगता है कि उस अर्थ में कुछ होना चाहिए।

बीटीडब्ल्यू, एक ग्रहण प्लगइन अद्भुत होगा।

संपादित करें: मैंने क्लासडेप के साथ जाना चुना क्योंकि यह एकमात्र सुझाव था जो काम करता था। हालांकि, मुझे इसके साथ कुछ परेशानी हो रही है: कृपया this question

+0

उत्कृष्ट प्रश्न - मैं हमेशा ऐसा करने के लिए एक उपकरण चाहता था। वहाँ एक होना चाहिए! –

+0

http://sourceforge.net/project/downloading.php?group_id=147285&use_mirror=freefr&filename=cphelper_1.2.8GA.zip डाउनलोड – VonC

+0

के लिए काम करता है मैं इसे आज रात या कल साझा करूंगा: किसी भी साझाकरण फ़ाइल से "पहुंच से वंचित" है काम;) – VonC

उत्तर

4

ClassDep (सूर्य से, जिनी विकास किट में) आपके लिए यह करेगा।

+0

से लाइब्रेरी जार को नहीं हटाता है, यह बहुत अच्छा लगता है, लेकिन ऐसा लगता है कि इसका उपयोग करने के लिए तुच्छ नहीं है। मैं इसके बारे में एक और सवाल पोस्ट कर रहा हूं। –

+0

हाय, ब्रायन। यदि आप कर सकते हैं, तो कृपया http://stackoverflow.com/questions/745574/classpath-problems-with-jini-classdep-javas- निर्भरता- फाइंडर –

+1

ऊपर दिया गया क्लासडेप लिंक अब अपाचे नदी परियोजना को इंगित कर रहा है जिसमें कोई नहीं है इसका उपयोग कैसे करें इसके बारे में सुराग। किसी को भी सुझाव मिल गया? –

2

ClassPathHelper इसकी सहायता कर सकता है।

espacially "क्लासपाथ देखें पर नहीं"

Not on Classpath

यह जार कि classpath पर नहीं हैं (लेकिन मौजूदा परियोजना के तहत कर रहे हैं) के लिए स्कैन दृश्य। यह संकुल और कक्षाओं की मूल ब्राउज़िंग प्रदान करता है जो उपलब्ध हैं लेकिन क्लासपाथ पर नहीं। क्लासपाथ बनाने की कोशिश करते समय यह सहायक हो सकता है, क्योंकि आप लापता वर्गों को तुरंत देख सकते हैं कि किन जारों में उन्हें शामिल किया गया है।

+0

मुझे यहां बहुत लटका देना चाहिए ... जब मैंने ग्रहण स्क्रीनशॉट देखा, तो मैंने तुरंत सोचा "वोनसी!" –

+0

TssTss ... और अभी तक एक और प्रविष्टि को जोड़ने के लिए "आप जानते हैं कि आप ब्राउज़िंग कर रहे हैं स्टैक ओवरफ़्लो बहुत अधिक कब?" प्रश्न (http://stackoverflow.com/questions/247342);) – VonC

+0

मैं इसका परीक्षण करने के लिए मर रहा हूं, लेकिन इसे डाउनलोड नहीं कर सकता! http://sourceforge.net/project/showfiles.php?group_id=147285&package_id=162288 (कहता है कि यह अनुपलब्ध है - डब्ल्यूटीएफ?) –

1

ग्रहण प्लगइन नहीं है, लेकिन मेरा मानना ​​है कि ProGuard की "सिकुड़ने" कार्यक्षमता बिल्कुल वही है जो आप खोज रहे हैं।

+0

मुझे ऐसा नहीं लगता: प्रोगार्ड आपके इनपुट जार से अप्रयुक्त कक्षाओं को हटा सकता है लेकिन प्रोजेक्ट –

7

क्लास.forName() के माध्यम से एक वर्ग लोड होने के मामले से सावधान रहें और मैनिफेस्ट फ़ाइल में निर्भरता के रूप में निर्दिष्ट नहीं है (इसके लिए एक निर्भर-ऑन: विशेषता है, लेकिन कई लोग निर्दिष्ट नहीं करते हैं यह, जो इस तरह के औजारों को तोड़ता है, जब मैंने इस तरह के उपकरण पर काम किया तो मेरे अस्तित्व का झुकाव)।

+0

हैलो हलिंग समस्या! –

+0

@ मैट 100% सुनिश्चित नहीं है कि आपका क्या मतलब है ... क्या आप विस्तृत कर सकते हैं? – TofuBeer

0

आप यह भी नहीं बता सकते कि क्या JARs जिन्हें आप आयात नहीं करते हैं, निर्भरताओं की निर्भरता आवश्यक हैं। उदाहरण के लिए, यदि आप वसंत का उपयोग करते हैं तो यह अपनी निर्भरताओं के साथ आता है, भले ही आप अपने कोड में उन वर्गों को आयात या कॉल न करें। मैं ProGuard से अनजान हूँ - क्या यह उन मामलों की जांच करता है?

+0

एक उचित निर्भरता ट्रैकर ऐसा करेगा (मैंने 1 99 8/9 में एक बार लिखा था)। – TofuBeer

1

मैंने एक छोटी ग्रहण प्लगइन लिखा जो वर्कस्पेस से मौजूदा java project लेता है। परियोजनाओं के प्रत्येक classpath entryraw classpath के लिए यह removes परियोजनाओं से कच्चे क्लासपाथ और builds the project से है। यदि कोई problemmarkers गंभीरता त्रुटि appear on the project के साथ, यह स्थायी रूप से परियोजनाओं से क्लासपाथ प्रविष्टि को हटा देता है।

मैं उस प्लगइन को साझा करने में सक्षम नहीं हूं, लेकिन ऊपर दिए गए एपीआई के लिंक के साथ इसे स्वयं लागू करने के लिए यह बहुत अधिक काम नहीं है।

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