12
votes

Erreur: Impossible de trouver une super classe commune de

J'essaie de traiter avec Proguard une application de bureau MS Windows (Java 6 SE en utilisant le SWT LIB fourni par Eclipse). Et j'obtiens l'erreur critique suivante:

-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-optimizationpasses 3
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-dontnote


1 commentaires

Ajouter -verbose à la ligne de commande si vous n'avez pas à obtenir une trace de pile complète.


4 Réponses :


7
votes

Essayez d'ajouter l'option -DontSkiPnonPublicLibraryClasses à votre ligne de commande.

du manuel de PROGUARD :

limitations pour l'efficacité, PROGUARD ignore toujours n'importe quel privé ou Package Cours de bibliothèque visibles tout en lire des pots de bibliothèque. Si l'un d'entre eux sont prolongés par la bibliothèque publique classes, puis prolongé à nouveau par classes d'entrée, Proguard se plaindre Cela ne peut pas les trouver. Dans ce cas, vous devrez utiliser le -DontSkipnonPublicLibraryClasses option, et peut-être même le -DontSkipnonPublicLibraryClassMembers . L'interface utilisateur graphique a des cases à cocher pour ces paramètres.


2 commentaires

Oui, je l'ai fait et ces erreurs ont maintenant été résolues. Malheureusement, d'autres erreurs sont maintenant montées: je vais les ajouter dans mon post ci-dessus, comme une mise à jour


Oui merci Jrl, j'essaie la version de la ligne de commande de se rendre au travail, Coz, ce sera plus pratique pour moi.



1
votes

Essayez de supprimer l'option -DontNote . Vous pouvez avoir des définitions en double que vous ne recevez pas d'avertissements pour, ou peut-être que vous ignorez les avertissements.


2 commentaires

LOL: D Je suis en train d'ignorer les avertissements, à quel point cela peut être mauvais? Maintenant, je vais essayer d'ajouter des avertissements dans la conservation des classmères, je vais rédiger mes progrès.


Non, je n'ai aucun avertissement maintenant actuellement. J'avais seulement des notes, et quand j'ai mis -dontnote, je reçois toujours une erreur que pour moi est impossible à comprendre. Je colle toute la sortie de ma question originale de la mise à jour de la fin de l'année, voir ci-dessus.



1
votes

J'ai eu le même problème, mais n'a pas essayé de spécifier le -DontSkipnonpubliclibraryClasses ou toute autre option pour être corrigé. Mon problème était survenu sur java.lang.stringbuffer classe, qui était très bizarre. Stringbuffer La classe a été utilisée dans tout le projet et l'erreur ne s'est produite nulle part ailleurs.

à corriger, tout ce que j'ai fait était de déplacer la portée de Stringbuffer .

code ancien - avec erreur: xxx

nouveau code - sans problème. xxx

i avoir un sentiment que cela doit faire quelque chose avec PROGUARD et son analyse du code.


1 commentaires

Avez-vous déjà trouvé une autre solution?



2
votes

J'ai eu un problème avec une application en fonction de divers autres projets. J'ai essayé les solutions énumérées, mais aucune d'entre elles aide. Basé sur des tests, les étapes de rétrécissement et de préversification étaient correctement en cours d'exécution, l'optimisation a jeté l'erreur:

-optimizations !code/allocation/variable


0 commentaires