के लिए सभी सबफ़ोल्डर में सभी जेएआर फ़ाइलों को स्कैन करें हम एक वर्ग का पुराना संस्करण देख रहे हैं, हालांकि हमारे पास नवीनतम तैनाती थी। किसी एप्लिकेशन सर्वर के सभी सबफ़ोल्डर में सभी JAR फ़ाइलों को स्कैन करने के लिए, हम एक छोटी शेल स्क्रिप्ट कैसे लिखते हैं जो JARS फ़ाइलों के फ़ाइल नाम को प्रिंट करता है जिसमें यह विशिष्ट वर्ग पाया जाता है?जारस्केन, विशिष्ट वर्ग
उत्तर
कुछ की तरह:
find . -name '*.jar' | while read jarfile; do if jar tf "$jarfile" | grep org/jboss/Main; then echo "$jarfile"; fi; done
आपको लगता है कि लपेट कर सकते हैं इस तरह:
jarscan() {
pattern=$(echo $1 | tr . /)
find . -name '*.jar' | while read jarfile; do if jar tf "$jarfile" | grep "$pattern"; then echo "$jarfile"; fi; done
}
और फिर jarscan org.jboss.Main
वर्तमान निर्देशिका के नीचे पाया सभी जार फ़ाइलों में उस वर्ग के लिए खोज करेंगे
अब इस प्रश्न का उत्तर देने के लिए यहां एक सरल खोल कमांड है जो हमारे लिए किया गया है।
for jarFile in $(
ls -R |
awk '
match($0, ".*:") {
folder=$0
}
! match($0, ".*:") {
print folder$0
}' |
grep "\.jar" |
sed -e "s/:/\//g"
);
do
unzip -l $jarFile;
done |
awk '
match($0, "Archive.*") {
jar=$0
}
! match($0, "Archive.*") {
print jar" : "$0
}' |
grep org.jboss.Main
यदि आपको केवल परिणाम की आवश्यकता है तो आप agentransack http://www.mythicsoft.com/agentransack/ इंस्टॉल कर सकते हैं और एक टेक्स्ट टेक्स्ट खोज कर सकते हैं। Agentransack जार और ज़िप फ़ाइलों के अंदर भी खोज करता है।
साल पहले मैंने इस तरह के मुद्दों को हल करने के लिए उपयोगिता classfind लिखा था। अपने क्लासरपाथ को अपने .jar सेट पर इंगित करने के लिए सेट करें, और क्लासफाइंड आपको बताएगा कि कौन सा जार इसे एक विशेष श्रेणी मिलेगा।
example% classfind -c Document
/usr/java/j2sdk1.4.0/jre/lib/rt.jar -> org.w3c.dom.Document
/usr/java/j2sdk1.4.0/jre/lib/rt.jar -> javax.swing.text.Document
नहीं सीधे अपने सवाल का जवाब देने, लेकिन शायद यह आपकी समस्या का समाधान होगा: आप स्थान (जैसे जार फ़ाइल) जिसमें से एक विशिष्ट वर्ग अपने कोड में एक सामान्य पंक्ति जोड़कर लोड किया गया था प्रिंट कर सकते हैं:
System.err.println(YourClass.class.getProtectionDomain().getCodeSource());
तब आप यह सुनिश्चित करेंगे कि यह कहां से आता है।
टूल JAR Explorer बहुत उपयोगी है।
यह दो पैनलों के साथ एक जीयूआई विंडो खोलता है। आप एक निर्देशिका चुन सकते हैं, टूल उस निर्देशिका में सभी जेएआर फाइलों को स्कैन करेगा, फिर आपको एक विशिष्ट श्रेणी की खोज करने दें। निचला पैनल तब सभी स्कैन किए गए जेएआर फाइलों में उस वर्ग के लिए हिट की सूची के साथ रोशनी करता है।
इस उपकरण के लिए नया यूआरएल: https://github.com/javalite/jar-explorer – ipolevoy
आप जावा टूल JarScan पर भी एक नज़र डालना चाहते हैं।
कोई कक्षा के नाम और पैकेज द्वारा खोज सकता है।
कुल कमांडर उपलब्ध नहीं होने पर यह बहुत मदद करता है और केवल जावा को निष्पादित करने की अनुमति है।
#! /bin/sh
path=$1
segment=$2
if [ -z "$path" ] || [ -z "$segment" ]
then
echo "Usage: $0 <path> <segment>"
exit
fi
for jar in $path/*.jar ; do echo " *** $jar *** " ; jar tf $jar| grep --color=always $segment; done;
- 1. विशिष्ट टेम्पलेट वर्ग फ़ंक्शन
- 2. वर्ग विशिष्ट set_new_handler
- 3. jQuery - एक विशिष्ट वर्ग
- 4. आईडी या विशिष्ट वर्ग
- 5. सीएसएस विशिष्ट वर्ग
- 6. एक विशिष्ट वर्ग jQuery
- 7. सी # विशिष्ट वर्ग
- 8. Jquery लोड, एक विशिष्ट वर्ग
- 9. एक पूरी तरह से विशिष्ट वर्ग टेम्पलेट
- 10. उप-वर्ग-विशिष्ट, टेम्पलेटेड तर्क प्रकार
- 11. : होवर लेकिन: किसी विशिष्ट वर्ग पर नहीं
- 12. JQuery चयनकर्ता: विशिष्ट वर्ग * और * आईडी
- 13. LINQ - समूह विशिष्ट प्रकार के वर्ग
- 14. इंटरफेस बनाम सार वर्ग (विशिष्ट मामले में)
- 15. डीएलएल और पूरी तरह से विशिष्ट टेम्पलेट वर्ग
- 16. jQuery: एक अंतिम बच्चा है जिसमें विशिष्ट वर्ग
- 17. jQuery - एक तत्व को छिपाने के लिए जिसमें विशिष्ट वर्ग
- 18. किसी विशिष्ट वर्ग/इंटरफ़ेस से प्राप्त सभी वर्गों की सूची
- 19. Ninject: एक सामान्य वर्ग के लिए डिफ़ॉल्ट और विशिष्ट बाइंडिंग
- 20. एनएच-चाइल्ड छद्म चयनकर्ता को एक विशिष्ट पंक्ति वर्ग
- 21. सी # अमूर्त वर्ग विशिष्ट कोड के लिए पैटर्न
- 22. किसी विशिष्ट वर्ग के साथ ली का चयन कैसे करें?
- 23. jquery क्लिक क्लाइंट पर क्लिक करें यदि यह विशिष्ट वर्ग
- 24. जांचें कि क्लिक किए गए तत्व में कोई विशिष्ट वर्ग
- 25. वर्ग
- 26. सीएसएस - डिजाइन माता पिता वर्ग करता है, तो बच्चे को एक विशिष्ट वर्ग
- 27. jquery विशिष्ट वर्ग द्वारा तत्व ढूंढें जब तत्व में कई वर्ग
- 28. log4j: विशिष्ट क्लाइंट के विशिष्ट आउटपुट
- 29. "वर्ग टेम्पलेट" बनाम "टेम्पलेट वर्ग"
- 30. एक विशिष्ट
'जार' के बजाय 'unzip -l' का उपयोग करके यह बहुत तेज़ हो गया। 'जार' ने 72 सेकंड बनाम 4 सेकेंड लिया जब 'unzip -l' –
के साथ चलाया गया, मैं वास्तव में यह कहने के लिए यहां आया था। +1 –
यदि मैं जानना चाहता हूं कि कौन सा जार एक निश्चित वर्ग पाया जा सकता है तो मैं आमतौर पर सीडी ~/.m2/भंडार की तरह कुछ करता हूं; grep -r -H "classname" *। – extraneon