Fehler: Kann nicht finden gemeinsame super-Klasse
Ich versuche zu verarbeiten mit Proguard ist ein MS-Windows-desktop-Anwendung (Java 6 SE mit der SWT-lib zur Verfügung gestellt von Eclipse). Und bekomme ich die folgende kritische Fehler:
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]
----------------------------
Als ich versucht habe, Google die Fehlermeldung, es kam nur auf zwei spots auf das gesamte web, das erstaunt mich sehr.
Ich bin Neuling mit Proguard-und Java-code-Optimierung-tools überhaupt.
Alle Gedanken und Vorschläge, wie dieses Problem zu beheben, wird geschätzt. Vielen Dank im Voraus.
Oben genannten Fehler ist nun behoben, mit der Verwendung von "-dontskipnonpubliclibraryclasses"
--Letzte Aktualisierung:
Ich bekomme immer noch ein Fehler jetzt.
Die gesamte Ausgabe ist nun die folgende:
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>
Dies ist ein problem, dass ich nicht verstehen kann, für bestimmte 🙁 jede Hilfe wird sehr geschätzt.
Die Optionen, die ich verwenden, sind die folgenden:
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-optimizationpasses 3
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
-dontnote
- add-verbose Befehlszeile, wenn Sie nicht haben, um sich einen vollständigen stack-trace.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie, die option
-dontskipnonpubliclibraryclasses
an die Befehlszeile.Aus der Proguard Handbuch:
Ich hatte das gleiche Problem, aber nicht versuchen Sie, die
-dontskipnonpubliclibraryclasses
oder eine andere option zu bekommen fixed. Mein problem war, die überjava.lang.StringBuffer
Klasse, die war sehr seltsam.StringBuffer
Klasse verwendet wurde, die alle über das Projekt und der Fehler nicht irgendwo anders ist.Zu beheben, alles, was ich Tat, war zu bewegen, den Umfang der
StringBuffer
.ALT-Code - bei Fehler:
NEUEN Code - ohne problem.
Ich habe das Gefühl, das hat etwas zu tun mit ProGuard und wie es analysiert den code.
Hatte ich ein Problem mit einer Anwendung in Abhängigkeit von verschiedenen anderen Projekten. Ich habe versucht, die aufgeführten Lösungen, aber keiner von Ihnen helfen. Basierend auf tests, die schrumpfen und preverify Schritte wurden korrekt ausgeführt, ist die Optimierung warf die Fehlermeldung:
Habe ich versucht zu halten (-keep-Optionen) beide Klassen ohne Erfolg.
Basierend auf andere threads, die ich gefunden, wird die minimale Lösung ist das deaktivieren von Variablen-Optimierung:
Dies ermöglicht mir erfolgreich kompiliert, hat aber auch seine Nachteile.
Versuchen, das entfernen des
-dontnote
option. Sie können doppelte Definitionen, die Sie nicht empfangen Warnungen, oder vielleicht sind Sie ignorieren die Warnungen.