Erreur: impossible de trouver un super classe de
Je suis en train d'essayer de traiter avec Proguard un MS Windows desktop application (Java 6 SE en utilisant le SWT lib fournis par Eclipse). Et j'obtiens les erreurs critiques suivantes:
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]
----------------------------
Quand j'ai essayé de Google l'erreur, il est sorti seulement sur deux points sur l'ensemble du web, ce qui m'étonne grandement.
Je suis débutant à l'aide d'Proguard de code Java et les outils d'optimisation.
Toutes les pensées et les suggestions de comment résoudre ce problème, ce sera apprécié. Merci à l'avance.
D'erreur ci-dessus est maintenant corrigé, avec l'aide de "-dontskipnonpubliclibraryclasses"
--dernière mise à jour:
Je reçois encore une autre erreur maintenant.
Toute la production est aujourd'hui le suivant:
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>
C'est un problème que je ne comprends pas pour certains 🙁 toute aide sera très appréciée.
Les options que j'utilise sont les suivants:
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-optimizationpasses 3
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-dontnote
OriginalL'auteur PatlaDJ | 2010-04-07
Vous devez vous connecter pour publier un commentaire.
Essayez d'ajouter l'option
-dontskipnonpubliclibraryclasses
à votre ligne de commande.De la Proguard Manuel:
oui merci JRL, je suis en train de la ligne de commande verison pour se rendre au travail, coz il sera plus pratique pour moi.
OriginalL'auteur JRL
J'ai eu le même problème, mais ne pas essayer de préciser la
-dontskipnonpubliclibraryclasses
ou toute autre option pour la fixation. Mon problème est survenu surjava.lang.StringBuffer
classe, ce qui était très bizarre.StringBuffer
classe a été utilisé à travers le projet et l'erreur ne se produit pas n'importe où ailleurs.À corriger, je n'ai fait de déplacer le champ d'application de
StringBuffer
.ANCIEN Code - avec l'erreur:
NOUVEAU Code sans problème.
J'ai le sentiment que cela a à voir quelque chose avec ProGuard et la façon dont il analyse le code.
OriginalL'auteur Petarian
Essayez de supprimer le
-dontnote
option. Vous pouvez avoir de doublons de définitions que vous ne recevez pas les avertissements, ou peut-être vous êtes ignorant les mises en garde.non effectivement je n'ai PAS de mises en garde actuellement. Je n'avais que des notes, et quand j'ai mis -dontnote, j'obtiens toujours une erreur, que pour moi, c'est impossible à comprendre. Je n'ai coller la sortie dans ma question initiale que --dernière mise à jour, voir ci-dessus.
OriginalL'auteur Marcus Adams
J'ai eu un problème avec une application en fonction de divers autres projets. J'ai essayé de la liste des solutions, mais aucun d'entre eux de l'aide. Sur la base de tests, le rétrécissement et la preverify des mesures ont été correctement exécuté, l'optimisation a jeté l'erreur:
J'ai essayé de garder (-options) les deux classes, sans succès.
Basé sur d'autres threads, j'ai trouvé la solution minimale est de désactiver l'optimisation des variables:
Cela me permet de compiler avec succès, mais a également ses inconvénients.
OriginalL'auteur Habib