سؤال

لقد اخترت 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 لأنه سيترك هذه الفئات دون تغيير عن طريق التغلب (على الأقل لإيجاد السبب الجذري للمشكلة).

ملاحظة جانبية هي محاولة الاستخدام كاميل أسماء الفصل عند البرمجة في جافا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top