MS Windows デスクトップ アプリケーション (Eclipse が提供する SWT ライブラリを使用する Java 6 SE) を Proguard で処理しようとしています。そして、次の重大なエラーが発生します。
Unexpected error while performing partial evaluation:
Class = [org/eclipse/swt/widgets/DateTime]
Method = [<init>(Lorg/eclipse/swt/widgets/Composite;I)V]
Exception = [java.lang.IllegalArgumentException] (Can't find common super class of [java/lang/StringBuffer] and [org/eclipse/swt/internal/win32/TCHAR])
Error: Can't find common super class of [java/lang/StringBuffer] and [org/eclipse/swt/internal/win32/TCHAR]
----------------------------
このエラーを Google で検索してみると、ウェブ全体で 2 か所しか出てこず、非常に驚きました。私は、Proguard および Java コード最適化ツールをまったく使用していない初心者です。これを修正する方法についての考えや提案をいただければ幸いです。前もって感謝します。
上記のエラーは、「-dontskipnonpubliclibraryclasses」を使用して修正されました。
--最終更新:
今でも別のエラーが発生します。出力全体は次のようになります。
D:\eclipse_projs\java_obfuscate\gci>gci.bat
ProGuard, version 4.4
Reading program jar [D:\eclipse_projs\java_obfuscate\gci\gci.jar]
Reading library jar [D:\jre1.6.0_07\lib\rt.jar]
Unexpected error while evaluating instruction:
Class = [org/eclipse/swt/widgets/Synchronizer]
Method = [runAsyncMessages(Z)Z]
Instruction = [60] aload_1 v1
Exception = [java.lang.IllegalArgumentException] (Value is not a reference value [proguard.evaluation.value.UnknownIntegerValue])
Unexpected error while performing partial evaluation:
Class = [org/eclipse/swt/widgets/Synchronizer]
Method = [runAsyncMessages(Z)Z]
Exception = [java.lang.IllegalArgumentException] (Value is not a reference value [proguard.evaluation.value.UnknownIntegerValue])
Error: Value is not a reference value [proguard.evaluation.value.UnknownIntegerValue]
D:\eclipse_projs\java_obfuscate\gci>
これは私が確実に理解できない問題です:(どんな助けも大歓迎です。
私が使用するオプションは次のとおりです。
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-optimizationpasses 3
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-dontnote