2011-01-20 19 views
5

मेरे पास जार फ़ाइलों का एक गुच्छा है (एक maven2 प्रोजेक्ट से) और मैवेन रिपोर्ट्स कुछ पैकेज नहीं मिल सका (org.openanzo.client.jena सटीक होना)। मैं मैवेन निर्भरता संकल्प के परिणामस्वरूप डाउनलोड की गई जेएआर फाइलों में खोदना चाहता हूं और यह पता लगा सकता हूं कि इन जेएआर फाइलों से कौन से पैकेज उपलब्ध हैं। इनसाइट्स?मुझे जार में परिभाषित संकुल कैसे मिलेंगे?

अद्यतन: जाहिर है, एक जार फ़ाइल के अंदरूनी निरीक्षण का एकमात्र अच्छा समाधान "जार" उपयोगिता है या कोई ऐसा करने के लिए अपने आईडीई की सुविधाओं का उपयोग कर सकता है।

+0

"मैवेन रिपोर्ट्स" कुछ पैकेज नहीं मिल सका "क्या मतलब है? आप किस आदेश को चलाने की कोशिश कर रहे हैं? संदेश क्या है? क्या कोई अन्य जानकारी प्रदान की गई है। आमतौर पर ऐसी त्रुटि संदर्भ के बिना प्रकट नहीं होती है। –

+0

@Zac: आप सही हैं। यह मैवेन के साथ मेरी अपरिचितता थी जिसने मुझे विश्वास किया कि समस्या एक लापता जार है। मैंने इसे रास्ते से हल किया। आपके विचार के लिए टीएनएक्स। –

उत्तर

11

jar tvf filename.jar आपको इसे निकालने की आवश्यकता के बिना एक जार फ़ाइल की सामग्री दिखाएगा।

लेकिन मुझे लगता है कि जो भी आप वास्तव में करने की कोशिश कर रहे हैं वह उस निर्भरता के लिए सही निर्देशांक ढूंढता है जो आप खो रहे हैं, क्योंकि स्पष्ट रूप से आपके पास अभी तक कोई भी पैकेज नहीं है जिसे आप ढूंढ रहे हैं (दूसरे में शब्दों, उनकी सामग्री की जांच करने में आपकी मदद करने की संभावना नहीं है)।

मैं कबूल करता हूं कि पहली जगह मैं जांच करने का सुझाव दूंगा, सोनीटाइप का public Nexus instance है। your example की खोज कुछ भी नहीं बदली है, हालांकि। आम तौर पर इसका मतलब है कि यह परियोजना मैवेन सेंट्रल या अन्य प्रमुख भंडारों (जो ठीक है) में अपनी सामग्री प्राप्त करने की कोशिश नहीं कर रही है, इसलिए आपको वेब खोज का सहारा लेना होगा। आम तौर पर पैकेज के पहले दो खंड आपको बताते हैं कि कहां देखना है (आपके मामले में openanzo.org)।

1

.jar फ़ाइलें सिर्फ ज़िप संपीड़ित अभिलेखागार हैं, इसे ज़िप करने के लिए नाम दें, इसे अपने पसंदीदा अनजिप प्रोग्राम के साथ खोलें, और निर्देशिका के माध्यम से आगे बढ़ें।

यदि आप एक ग्रहण परियोजना में जार फ़ाइल जोड़ते हैं, तो आप ली प्रोजेक्ट एक्सप्लोरर में lib के माध्यम से जा सकते हैं।

HTH

9

आप लिनक्स या एक मैक पर हैं, तो आप अपने जार और प्रकार वाले फ़ोल्डर की जड़ में टर्मिनल के लिए जा सकते हैं:

# grep -ri "org.openanzo.client.jena" * 

यह की एक पुनरावर्ती सूची वापस आ जाएगी सभी जेएआर फाइलें जिनमें उस पैकेज का नाम होता है। यदि यह 0 परिणाम देता है, तो उन JARS में से कोई भी उस पैकेज में नहीं है।

यदि आप अधिक विस्तृत खोज करना चाहते हैं, तो आप JAR फ़ाइलों को अनजान कर सकते हैं। निर्देशिका संरचना और .class फ़ाइलों को फ़ोल्डर्स में संकुल द्वारा व्यवस्थित किया जाएगा।

# jar xvf filename.jar 

आप विंडोज पर हैं, तो आप एक जार फ़ाइल एक उपकरण का उपयोग कर इस तरह के 7Zip रूप unJAR कर सकते हैं।

+1

यदि आप विंडोज पर हैं, तो आप साइगविन और लिनक्स grep का उपयोग कर सकते हैं :) – MartinC

0

माना जाता है कि मैवेन ने जार फ़ाइलों को डाउनलोड किया है, फ़ाइलों को स्थानीय भंडार में लोड किया जाएगा। आप Maven ब्राउज़र है कि ग्रहण के साथ पैक आता ब्राउज़ करें और अपने भंडार में कलाकृतियों के लिए खोज करने के लिए इस्तेमाल कर सकते हैं (आमतौर पर userdir में/.m2/भंडार)

नोट:। आप सीधे अगर आप चाहते हैं अपने भंडार का पता लगाने कर सकते हैं। आप डाउनलोड किए गए संकुल को समझेंगे। लेकिन मैं प्लगइन का उपयोग करने का सुझाव देते हैं।

यदि आप इंटेलिज आईडीईए का उपयोग कर रहे हैं, तो प्रत्येक प्रोजेक्ट में बाहरी पुस्तकालय नामक एक पेड़ होता है जो आपको अपने पुस्तकालयों को खोजने और खोजने की अनुमति देता है।

2

@ करस्टेन आपको .zip पर .jar फ़ाइल का नाम बदलने की आवश्यकता नहीं है।आप Winzip/या अन्य ज़िप उपयोगिता (विंडोज़ ओएस मानते हुए) में सीधे जार फ़ाइल खोल सकते हैं

@ ashy_32bit आईबीएम से "जार क्लास फाइंडर" ग्रहण प्लगइन का उपयोग करने का प्रयास करें। वर्गों को खोजने के लिए सरल प्लगइन (आप वर्ग के नाम जानते हैं)

या

कार्स्टन सुझाव दिया ... lib फ़ाइलों के रूप में सेट जार फ़ाइलों के रूप में और मैन्युअल रूप से उसे ढूंढने

या

बनाने एक बैच फ़ाइल a.bat कहा जाता है (जहां सीधे एक ही फ़ोल्डर के तहत अपने सभी जार फ़ाइलें) और निम्न 4 लाइनों

@ECHO OFF 
dir /b *.jar > allJarFilesList.txt 
FOR /F %%A IN (allJarFilesList.txt) DO jar -tf %%A > list_of_packages.txt 
FOR %%B IN (list_of_packages.txt) DO FIND /I "com/sun" %%B 

नोट "सह पेस्ट मी/सूरज "आखिरी पंक्ति में .. यह कठिन कोडित है, आप तर्क के रूप में भी पास कर सकते हैं ...

मुझे पता है कि यह बहुत ही बुनियादी रूप है और इसे" सब "में सुधार किया जा सकता है जैसे विभिन्न उप निर्देशिका।

उम्मीद है कि इससे मदद मिलती है :-)

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