باستخدام بروغوارد إلى رمز
-
04-10-2019 - |
سؤال
لقد اخترت Proguard وهنا الخيارات التي قمت بتكوينها مع:
تقلص
خيارات:
- إنكمش
يحفظ:
- التطبيقات
- التطبيقات
احتفظ أيضا:
- التعدادات
- برامج تشغيل قاعدة البيانات
- التأرجح ui l & f
التشويش
خيارات:
- obfuscate (duh!: p)
- التحميل الزائد بقوة
- استخدم أسماء أعضاء الفصل الفريدة
- استخدم أسماء فئة المختلط
- التسلسل الهرمي للحزمة
- فصول إعادة التدوير
الحفاظ على الأسماء:
- أسماء الطريقة الأصلية
- . أسماء الأسماء
تحسين
خيارات:
- تحسين
- دمج الواجهات بقوة
إزالة:
- تم فحص جميع الصناديق
معلومة
preVeriveAction والاستهداف:
- preverify
الاتساق والصحة:
- لاحظ الأخطاء المحتملة في التكوين
- تحذر من المدخلات الخاطئة ربما
- تخطي أعضاء فصل المكتبة غير الحكومية
وعندما آخذ الجرة وأضعها على النحو التالي:
أحصل على خطأ التطبيق عند الإطلاق:
java.lang.RuntimeException: java.lang.NoClassDefFoundError: b at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NoClassDefFoundError: b at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) at java.lang.Class.getConstructor0(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source) at java.awt.event.InvocationEvent.dispatch(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: b at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 14 more Caused by: java.io.IOException: open HTTP connection failed:http://mystikrpg.com/b.class at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) ... 17 more Exception: java.lang.RuntimeException: java.lang.NoClassDefFoundError: b
إليك ما يوجد داخل ملف الجرة قبل التشويش clientOffline.jar
:
line_tile/
META-INF/
وهنا ما هو ملف الجرة هذا بعد التشويش على newOne.jar
:
line_tile/
META-INF/
weapon/
me.gif
a.class
b.class
آمل أن يكون هذا جيدًا بما يكفي لمساعدتي في حل هذا. ما الخطأ الذي افعله؟
المحلول
أعتقد أن B.Class يتم إنشاؤه من فئة Gamepanel الداخلية. لذلك يمكن أن يكون هناك مشكلة مع الفصول الداخلية. هنا في Stackoverflow ، ذكر توم أنه لا يمكن أن يملأ الطبقات الداخلية بشكل صحيح. ينطبق الاقتراح هناك أيضًا هنا: حاول أن تتأرجح verbose=true
(أو مع java -jar proguard.jar @myconfig.pro -verbose).
أود أن أقترح أيضًا استخدام خيار exkernames (انظر كتيب) بالنسبة إلى Gamepanel و/أو tileoffline لأنه سيترك هذه الفئات دون تغيير عن طريق التغلب (على الأقل لإيجاد السبب الجذري للمشكلة).
ملاحظة جانبية هي محاولة الاستخدام كاميل أسماء الفصل عند البرمجة في جافا.