Pregunta

Elegí ProGuard y aquí las opciones de haberla configurado con:

La disminución

Opciones:

  • reducir

Mantener:

  • Aplicaciones
  • Applets

También hay que tener:

  • enumeraciones
  • controladores de base de datos
  • Oscilación UI L & F

ofuscación

Opciones:

  • Ofuscación (duh!: P)
  • Sobrecarga agresiva
  • Use nombres de los miembros de clase única
  • Use nombres de las clases mixtas Casee
  • Acoplar jerarquía de paquetes
  • clases REPACKAGE

Solicitud de nombres:

  • nombres de los métodos nativos
  • nombres de los métodos .class

Optimización

Opciones:

  • Optimizar
  • Combinar las interfaces agresivamente

Eliminar:

  • [Todas las casillas seleccionadas]

información

Preverifiaction y la orientación:

  • Preverify

La consistencia y exactitud:

  • Nota posibles errores en la configuración
  • Advertir de entrada sobre la posibilidad de errornous
  • Saltar no pública miembros de la clase de la biblioteca

y cuando tomo el frasco y ponerlo como:

Me sale este error en el lanzamiento del applet:

    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

Esto es lo que se encuentra dentro del archivo jar ANTES de la clientOffline.jar ofuscación:

line_tile/
META-INF/

y esto es lo que el archivo jar es después de la ofuscación a newOne.jar:

line_tile/
META-INF/
weapon/
me.gif
a.class
b.class

espero que esto es bueno lo suficiente para ayudar a resolver esto. ¿Qué estoy haciendo mal?

¿Fue útil?

Solución

supongo que se genera b.class de la clase interna GamePanel. Así que no puede haber un problema con las clases internas. Aquí en Stackoverflow Tom mencionado que no podía clases internas Ofuscación correctamente. La sugerencia también se aplica aquí:. Tratar de confundir con verbose=true (o con java-jar proguard.jar @ myconfig.pro -verbose)

También sugeriría a la opción de uso -keepnames (ver manual de ) para GamePanel y / o tileOffline ya que dejará a estas clases sin cambios por la ofuscación (al menos para encontrar la causa raíz del problema).

Una nota es tratar de usar CamelCase nombres de clase al programar en Java.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top