Domanda

Ho scelto ProGuard ed ecco le opzioni che ho configurato con:

Shrinking

Opzioni:

  • Shrink

Conserva:

  • Applicazioni
  • Applet

anche tenere:

  • Enumerazioni
  • driver di database
  • Altalena UI L & F

offuscamento

Opzioni:

  • Oscurazione (stato derubato: P)
  • Sovraccarico aggressivamente
  • Utilizza nomi unico membro di classe
  • Utilizzare i nomi delle classi miste Casee
  • gerarchia pacchetto Appiattisci
  • classi riconfezionare

mantenere i nomi:

  • nomi dei metodi nativi
  • nomi dei metodi .class

Ottimizzazione

Opzioni:

  • Ottimizza
  • Unisci interfacce aggressivo

Rimuovi:

  • [Tutti controllato le caselle]

Informazioni

Preverifiaction e targeting:

  • Preverify

La coerenza e correttezza:

  • errori potenziali Nota nella configurazione
  • Avvisa input circa possibilmente errornous
  • Skip non pubblica i membri della classe biblioteca

e quando prendo il barattolo e messo come:

ottengo questo errore applet sul lancio:

    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

Ecco ciò che si trova all'interno del file jar PRIMA della clientOffline.jar offuscamento:

line_tile/
META-INF/

e qui è ciò che file jar è dopo l'offuscamento per newOne.jar:

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

spero che questo è abbastanza buono per aiutarmi a risolvere questo. Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

credo che b.class è generato dalla classe interna GamePanel. Quindi non ci può essere un problema con le classi interne. Qui a StackOverflow Tom hanno detto che non poteva offuscare classi interne in modo corretto. Il suggerimento non vale anche qui:. Tenta di offuscare con verbose=true (o con java-jar proguard.jar @ myconfig.pro verbose)

Vorrei anche suggerire di utilizzare l'opzione -keepnames (vedere il manuale ) per GamePanel e / o tileOffline poiché lascerà queste classi immutati per un offuscamento (almeno per trovare la causa principale del problema).

Una nota a margine è cercare di utilizzare CamelCase nomi di classi durante la programmazione in Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top