मेरे पास एक तृतीय-पक्ष जार फ़ाइल है जो एपीआई के केवल भाग के लिए javadocs के साथ आता है। कक्षाओं और विधियों की पूरी सूची प्राप्त करने के लिए जार फ़ाइल को इंजीनियर करने का कोई तरीका है?जार फ़ाइल से विधि हस्ताक्षर कैसे प्राप्त करें?
उत्तर
jar tf
आपके लिए सामग्री सूचीबद्ध करेगा। javap
आपको कक्षाओं के अधिक विवरण देखने की अनुमति देगा (टूल गाइड देखें)।
, एक वर्ग एक जार myjar.jar
तो में mypkg.HelloWorld
नामित
javap -classpath myjar.jar mypkg.HelloWorld
की तरह इसे चलाने हालांकि है क्या आप वाकई इन अप्रकाशित API का उपयोग करके होना चाहते हैं? यह आमतौर पर एक बहुत बुरा विचार है।
यदि आप ग्रहण का उपयोग कर रहे हैं, तो आप इसे किसी प्रोजेक्ट के क्लासपाथ में जोड़ सकते हैं और ट्रीव्यू और/या सामग्री सहायता का उपयोग करके इसका पता लगा सकते हैं।
मुझे लगता है कि अन्य आईडीई समान कर सकते हैं।
एक कमांड-लाइन बिंदु दृश्य से, आप इसे unjar (jar xf foo.jar) कर सकते हैं और सभी फ़ाइलों के खिलाफ जावप का उपयोग कर सकते हैं।
स्कॉट ने कहा, आप जो कुछ भी ढूंढ रहे हैं उसे प्राप्त करने के लिए आप ग्रहण का उपयोग कर सकते हैं।
मैं JadClipse plugin प्राप्त करने की अनुशंसा करता हूं जो फ्लाई पर .class फ़ाइलों को विघटित कर देगा और आईडीई में कक्षाओं को ब्राउज़ करते समय आपको वास्तविक जावा कोड दिखाएगा।
सहमत हैं। एक बहुत शक्तिशाली संयोजन। –
ग्रहण महान
एक Java Decompiler वर्गों है कि आप कक्षाएं, विधियों, उनके हस्ताक्षर के बारे में जानने के लिए अध्ययन कर सके स्रोत कोड के कुछ semblence में वापस अनुवाद करें, और होता भी हो सकता है कुछ अंतर्दृष्टि काम करेगा कुछ तर्कों के लिए मान्य मानों में (उदाहरण के लिए इस तर्क के लिए शून्य न करें या आप तुरंत एक NullPointerException ट्रिगर करेंगे)। लेकिन जार को उतारने और सभी वर्ग फ़ाइलों के खिलाफ डिकंपेलर चलाने के लिए अपनी आस्तीन को रोल करें। अनियंत्रित वर्गों के साथ सहायता पाठ के लिए यह अनिवार्य रूप से ग्रहण कर रहा है।
अंत में, जाहिर है, एक "real programmer"byte-code पढ़ें सीधे एक decompiler की आवश्यकता के बिना।
एक सामान्य वर्ग (अमूर्त वर्ग नहीं) के तरीकों को जानने के लिए त्वरित सहायता, मैं निम्नलिखित करता हूं।
नया वर्गनाम()। ग्रहण में सूचीबद्ध विधियों के लिए ctrl + space दबाएं।
कक्षाओं और थिएटर पदानुक्रम देखने के लिए ग्रहण> पैकेज एक्सप्लोरर का उपयोग करें।
सामग्री सहायता (स्वत: पूर्ण सुविधा (Ctrl + Space)) भी एक अच्छा मदद है, लेकिन एक अप्रकाशित एपीआई
का उपयोग कर आप सभी तरीकों हस्ताक्षर बाहर पढ़ने के लिए पुस्तकालय WALA उपयोग कर सकते हैं की सिफारिश नहीं होगा। हालांकि आपको पहले जावा के लिए स्टब-कोड लोड करना होगा। निम्नलिखित कार्यक्रम सभी हस्ताक्षर बाहर पढ़ना चाहिए:
import com.ibm.wala.ipa.cha.ClassHierarchy;
import com.ibm.wala.ipa.cha.IClassHierarchy;
import com.ibm.wala.classLoader.IClass;
import com.ibm.wala.classLoader.IMethod;
import com.ibm.wala.ipa.callgraph.AnalysisOptions;
import com.ibm.wala.ipa.callgraph.AnalysisScope;
import com.ibm.wala.types.ClassLoaderReference;
import java.util.jar.JarFile;
import java.io.IOException;
import com.ibm.wala.ipa.cha.ClassHierarchyException;
public class methods {
public static void main(String[] args) throws IOException, ClassHierarchyException {
AnalysisScope scope = AnalysisScope.createJavaAnalysisScope();
scope.addToScope(ClassLoaderReference.Primordial, new JarFile("jSDG-stubs-jre1.5.jar"));
scope.addToScope(ClassLoaderReference.Application, new JarFile("myProgram.jar"));
IClassHierarchy cha = ClassHierarchy.make(scope);
for (IClass cl : cha) {
if (cl.getClassLoader().getReference().equals(ClassLoaderReference.Application)) {
for (IMethod m : cl.getAllMethods()) {
String ac = "";
if (m.isAbstract()) ac = ac + "abstract ";
if (m.isClinit()) ac = ac + "clinit ";
if (m.isFinal()) ac = ac + "final ";
if (m.isInit()) ac = ac + "init ";
if (m.isNative()) ac = ac + "native ";
if (m.isPrivate()) ac = ac + "private ";
if (m.isProtected()) ac = ac + "protected ";
if (m.isPublic()) ac = ac + "public ";
if (m.isSynchronized()) ac = ac + "synchronized ";
System.out.println(ac + m.getSignature());
}
}
}
}
}
आप here से अनुकूलित वाला संस्करण का उपयोग करते हैं यह Dalvik करता है (उदाएंड्रॉइड ऐप) भी।
- 1. एक जार हस्ताक्षर कैसे नवीनीकृत करें?
- 2. एपीके हस्ताक्षर हस्ताक्षर कैसे प्राप्त करें?
- 3. जार हस्ताक्षर सत्यापित करना
- 4. पोस्ट करें और उसी विधि हस्ताक्षर के साथ प्राप्त करें
- 5. टाइपो और जार हस्ताक्षर
- 6. टर्मिनल के साथ जार फ़ाइल में विधि कैसे कॉल करें?
- 7. चींटी: मर्ज किए गए जार फ़ाइल से फ़ाइलें बहिष्कृत करें
- 8. जावा हस्ताक्षर किए गए जार को एकाधिक हस्ताक्षर एल्गोरिदम
- 9. जार साइनर कैसे तेज़ करें?
- 10. विधि हस्ताक्षर
- 11. मैं जावा जार फ़ाइल से संसाधन फ़ाइल कैसे पढ़ूं?
- 12. सी #: विधि हस्ताक्षर?
- 13. विधि प्रतीक से MethodInfo कैसे प्राप्त करें
- 14. जार फ़ाइल
- 15. स्कैला फ़ाइल से एक जार फ़ाइल बनाना
- 16. जार फ़ाइल
- 17. जावा: सुपरक्लास विधि हस्ताक्षर
- 18. ग्रैडल बिल्ड द्वारा उत्पादित जार फ़ाइल का संदर्भ कैसे प्राप्त करें?
- 19. जार फ़ाइल
- 20. फ़ाइल जार
- 21. जावा से एक जार फ़ाइल के मुख्य वर्ग का नाम कैसे प्राप्त करें?
- 22. वेब सेवा विधि हस्ताक्षर
- 23. जार फ़ाइल
- 24. mkstemp() से फ़ाइल ऑब्जेक्ट कैसे प्राप्त करें?
- 25. यूआरआई से फ़ाइल पथ कैसे प्राप्त करें?
- 26. OpenFileDialog से फ़ाइल एक्सटेंशन कैसे प्राप्त करें?
- 27. एमआईबी फ़ाइल से ओआईडी कैसे प्राप्त करें?
- 28. इरादे से फ़ाइल नाम कैसे प्राप्त करें?
- 29. जावा: फ़ाइल से थंबनेल कैसे प्राप्त करें
- 30. debug.keystore फ़ाइल से MD5 कैसे प्राप्त करें?
प्रतिबिंब के साथ पसंद है? –