আমি কীভাবে জাভা। ক্লাস ফাইলগুলি মানব-পঠনযোগ্য উপায়ে খুলতে পারি?


111

আমি জাভা অ্যাপলেট এর ক্লাস ফাইলটি হুডের নীচে কী করছে তা জানার চেষ্টা করছি। এটিকে নোটপ্যাড বা টেক্সটপ্যাড দিয়ে খোলার মধ্যে কেবল গুচ্ছ-গুঁকের একটি গুচ্ছ প্রদর্শিত হয়।

এটিকে আবার কিছুটা পঠনযোগ্য ফর্ম্যাটে রঞ্জাল করার কোনও উপায় আছে যাতে আমি এটি কী করছে তা অনুধাবনের চেষ্টা করতে পারি?

  • পরিবেশ == উইন্ডোজ ডাব্লু / ভিএস ২০০৮ ইনস্টল করা হয়েছে।

7
শুধু শব্দার্থক জিনিস, এটি এক = দুটি নয়? == একটি প্রশ্ন যখন = একটি বিবৃতি এবং আপনি আপনার পরিবেশ সম্পর্কে একটি বিবৃতি দিচ্ছেন।
আইকো

আপনি এই প্রশ্নটি পরিষ্কার করতে পারেন? আমার তাত্ক্ষণিক ধারণাটি ছিল যে আপনি প্রকৃত বাইটকোডটি পড়তে চেয়েছিলেন, তবে মনে হচ্ছে আপনি আসলে অন্য কারও কোডটি ছড়িয়ে দিতে চান।
আউটলা প্রোগ্রামার

12
@ আইকো, = মানে অ্যাসাইনমেন্ট, == এর অর্থ সমতা। তিনি বলছেন যে (এনভায়রনমেন্ট == উইন্ডোজ ডাব্লু / ভিএস ২০০৮ ইনস্টলড) সত্য, উইন্ডোজ ডাব্লু / ভিএস ২০০8 ইনস্টলড ইনভায়রনমেন্ট সেট করার আদেশ দিচ্ছে না। মানুষ যে অফটোপিক এবং নার্দি ছিল।
ব্লারগবার্ড

7
রেকর্ডের জন্য == সমতা ঘোষণা করে না; এটি সমতা পরীক্ষা করে। আপনি সত্য == মিথ্যা লিখতে পারেন, এবং এটি এনভায়রনমেন্ট == উইন্ডোজ ডাব্লু / ভিএস ২০০৮ ইনস্টলড হিসাবে অর্থবহ অর্থবোধক, অর্থাতুল্য নয়।
বারওয়ার্সস

উত্তর:


208

জেডি-গুই এই মুহুর্তে সেরা ডিসকম্পেলার। এটি জাভাতে নতুন ধরণের বৈশিষ্ট্যগুলি হ্যান্ডেল করতে পারে, ডেটে জেএডি তুলনায়।


2020 সালে এই উত্তর কতটা আপ টু ডেট?
কোডিং ওম্বাট

যতক্ষণ লিঙ্কটি কোথাও যায়, আমি মনে করি এটি ভাল good আমি জানতাম না যে এখন আরও ভাল জাভা ডিকম্পিলার রয়েছে, কারণ আমি অনেক আগে থেকেই জাভা ব্যবহার করি নি।
ডেরেনডাব্লু

77

আপনি বাইটোকোড পড়তে আপত্তি না জানলে জাভ্যাপটি ঠিকঠাক কাজ করা উচিত। এটি স্ট্যান্ডার্ড জেডিকে ইনস্টলেশনের অংশ।

Usage: javap <options> <classes>...

where options include:
   -c                        Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>           Override location of installed extensions
   -help                     Print this usage message
   -J<flag>                  Pass <flag> directly to the runtime system
   -l                        Print line number and local variable tables
   -public                   Show only public classes and members
   -protected                Show protected/public classes and members
   -package                  Show package/protected/public classes
                             and members (default)
   -private                  Show all classes and members
   -s                        Print internal type signatures
   -bootclasspath <pathlist> Override location of class files loaded
                             by the bootstrap class loader
   -verbose                  Print stack size, number of locals and args for methods
                             If verifying, print reasons for failure

9

@ মিশেলমায়ার্স দ্বারা চিহ্নিত হিসাবে, ব্যবহার করুন

javap -c <name of java class file> 

JVM সমাবেশ কোড পেতে। আপনি আরও ভাল দৃশ্যমানতার জন্য আউটপুটটিকে একটি পাঠ্য ফাইলে পুনর্নির্দেশ করতে পারেন।

javap -c <name of java class file> > decompiled.txt

7

আপনি একটি জাভা ডিকম্পিলার চান, এটি করার জন্য আপনি কমান্ড লাইন সরঞ্জামটি ব্যবহার করতে পারেন javap। এছাড়াও, জাভা ডিকম্পিলার HOW-TO বর্ণনা করে যে কীভাবে আপনি কোনও শ্রেণিবিন্যাসের ফাইলটি decompile করতে পারেন।


2

আপনি যা খুঁজছেন তা জাভা ডি-সংকলক। আমি জেএডি http://www.kpdus.com/jad.html প্রস্তাব দিচ্ছি এটি অ বাণিজ্যিক ব্যবহারের জন্য বিনামূল্যে এবং কাজটি সম্পন্ন করে।

দ্রষ্টব্য: এটি কোডটি যা লেখা হয়েছিল ঠিক তার মতো করে তুলবে না। যেমন আপনি মন্তব্য এবং সম্ভবত পরিবর্তনশীল নামগুলি হারাতে যাচ্ছেন, তাই এটি কেবলমাত্র সাধারণ উত্স কোড পড়ার চেয়ে কিছুটা শক্ত হতে চলেছে। বিকাশকারী যদি সত্যিই গোপনীয় হয় তবে তারা তাদের কোডটিও অবিচ্ছিন্ন করে দেবে, এটি পড়া আরও শক্ত করে তোলে।


2

সিপুগুরু, আপনার অ্যাপলেটটি জাভ্যাক ১.৩ (বা তার চেয়ে কম) দিয়ে সংকলিত হয়েছে, আপনার সেরা বিকল্পটি জ্যাড ব্যবহার করা।

দুর্ভাগ্যক্রমে, জেডি 1.5.8 (এপ্রিল 14, 2001) দ্বারা সমর্থিত শেষ জেডিকে হ'ল জেডিকে 1.3 3

যদি আপনার অ্যাপলেটটি আরও সাম্প্রতিক সংকলক দিয়ে সংকলিত হয়েছে, আপনি জেডি-জিইউআই চেষ্টা করতে পারেন : এই ডিকম্পিলারটি বিকাশাধীন, তবুও, এটি জেডিকে ১.৪, 1.5 বা 1.6 সহ সংকলিত শ্রেণীর জন্য বেশিরভাগ সময় সঠিক জাভা উত্স উত্পন্ন করে।

DarenW, আপনার পোস্টের জন্য আপনাকে ধন্যবাদ। জেডি-জিইউ এখনও সেরা ডেস্পপাইলার নয় ... তবে আমি এতে কাজ করছি :)



2

ব্যবহার JAD বিশ্লিষ্ট করার জন্য এটি সম্ভবত আপনার সেরা বিকল্প। কোড অবচিত না করা হলে এটি একটি ঠিক ফলাফল অর্জন করবে will



1

আপনার একটি ডিকম্পিলার ব্যবহার করা দরকার। অন্যরা জেএডিকে পরামর্শ দিয়েছে, অন্যান্য বিকল্প রয়েছে, জেএডি সেরা।

আসল উত্স কোডের তুলনায় আপনি কিছুটা হারাতে পারেন এমন মন্তব্যগুলিতে আমি প্রতিধ্বনিত করব। এটি মুছে ফেলার কারণে কোডটি জেনেরিকগুলি ব্যবহার করে বিশেষত মজার দেখাচ্ছে।



1

আপনি যে শ্রেণীর ফাইলটি সন্ধান করতে চান তা যদি ওপেন সোর্স হয় তবে আপনার এটিটি ছড়িয়ে দেওয়া উচিত নয়, পরিবর্তে উত্স ফাইলগুলি সরাসরি আপনার আইডিইতে সংযুক্ত করুন। এইভাবে, আপনি কিছু লাইব্রেরি ক্লাসের কোডটি দেখতে নিজের মতো দেখতে পারেন


0

প্রস্তাবিত হিসাবে আপনি জেএডি ব্যবহার করতে পারেন এটি ডেকম্পাইল করতে এবং ফাইলগুলি দেখতে। পড়া সহজ করে তুলতে আপনি JADclipse প্লাগইনটি গ্রহণ করতে পারবেন ग्रहणের জন্য JAD সরাসরি জড়িত করার জন্য অথবা ডিজে জাভা ডেকম্পিলার ব্যবহার করতে পারেন যা কমান্ড লাইন JAD এর চেয়ে বেশি সহজ use


0

ফলস্বরূপ আপনি পঠনযোগ্য জাভা কোড চাইলে জেএডি একটি দুর্দান্ত বিকল্প। আপনি যদি সত্যিই .classফাইল ফর্ম্যাটটির ইন্টার্নালগুলি খনন করতে চান তবে আপনি চাইবেন javap। এটি জেডিকে দিয়ে বান্ডিল হয়ে গেছে এবং আপনাকে হেক্সাডেসিমাল বাইটকোডকে পঠনযোগ্য এএসসিআইতে "ডিকম্পাইল" করতে দেয়। এটি যে ভাষাটি তৈরি করে তা এখনও বাইটকোড (জাভার মতো কিছু নয়) তবে এটি মোটামুটি পাঠযোগ্য এবং অত্যন্ত শিক্ষণীয়।

এছাড়াও, আপনি যদি সত্যিই চান, আপনি কোনও .classহেক্স সম্পাদক সম্পাদকের যে কোনও ফাইল খুলতে পারেন এবং সরাসরি বাইটকোডটি পড়তে পারেন। ফলাফলটি ব্যবহারের মতো javap


0

অ্যাপলেট.ক্লাসটি ডিকম্পাইল করার দরকার নেই। জনসাধারণের জাভা এপিআই ক্লাসের উত্সকোডটি জেডিকে (আপনি যদি এটি ইনস্টল করতে চান) নিয়ে আসে এবং এটি ডিসকম্পাইল বাইটকোডের চেয়ে ভাল পঠনযোগ্য। আপনি src.zip (আপনার JDK ইনস্টলেশন ফোল্ডারে অবস্থিত) তে সংকোচিত দেখতে পারেন।



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.