質問

私はProguardを選びました、そしてこれが私がそれを構成したオプションです:

収縮

オプション:

  • シュリンク

保つ:

  • アプリケーション
  • アプレット

また、維持:

  • 列挙
  • データベースドライバー
  • スイングui l&f

難読化

オプション:

  • 難読化(duh!:p)
  • 積極的に過負荷
  • 一意のクラスメンバー名を使用します
  • 混合caseeクラス名を使用します
  • 平らなパッケージ階層
  • クラスの再パッケージ

名前を保持します:

  • ネイティブメソッド名
  • 。クラスメソッド名

最適化

オプション:

  • 最適化
  • インターフェイスを積極的にマージします

削除する:

  • チェックされたすべてのボックス

情報

Preverifiactionとターゲティング:

  • 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

これが難読化の前にjarファイルの中にあるものです clientOffline.jar:

line_tile/
META-INF/

そして、ここにそのjarファイルが難読化の後のものがあります 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)。

また、-keepnamesオプションを使用することをお勧めします(参照 マニュアル)Gamepanelおよび/またはTileOfflineの場合、これらのクラスは難読化によって変化しないようにするため(少なくとも問題の根本原因を見つけるため)。

サイドノートは使用してみてください キャメルケース Javaでプログラミングするときのクラス名。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top