IllegalArgumentException beim Obfuskieren mit ProGuard V4.4

VfL_Freak

Top Contributor
Hallo zusammen,

ich habe jetzt einige Stellen in meiner Applikation von String auf StringBuffer umgestellt.
Das klappt soweit bei Aufruf aus Eclipse auch problemlos ....

Nun wollte ich eben die Anwendung mittels ant/build.xml erzeugen, um sie auf den Webserver spielen zu können.
Dabei bekomme ich nun leider eine "IllegalArgumentException" beim Obfuskieren mit ProGuard V4.4 :

[proguard] Unexpected error while performing partial evaluation:
[proguard] Class = [a/a/a/l]
[proguard] Method = [a(IZ[B)V]
[proguard] Exception = [java.lang.IllegalArgumentException] (Can't find common super class of [java/lang/StringBuffer] and [a/a/a/e/ae])
[proguard] Unexpected error while preverifying:
[proguard] Class = [a/a/a/l]
[proguard] Method = [a(IZ[B)V]
[proguard] Exception = [java.lang.IllegalArgumentException] (Can't find common super class of [java/lang/StringBuffer] and [a/a/a/e/ae])

BUILD FAILED
C:\ECLIPSE_workspace\WorkerClient\build.xml:72: java.lang.IllegalArgumentException: Can't find common super class of [java/lang/StringBuffer] and [a/a/a/e/ae]


In Zeile 72 steht folgender Aufruf :
[XML]
<proguard overloadaggressively="true" printmapping="out.map" configuration="w_log4j_ant.pro">
<libraryjar path="${java.home}/lib/rt.jar;${java.home}/lib/jsse.jar;/ECLIPSE_workspace/LIBs/SerialIO/jspComm.jar;/ECLIPSE_workspace/LIBs/jakarta-log4j-1.2.8/dist/lib/log4j-1.2.8.jar;/ECLIPSE_workspace/LIBs/jco/lib/jco.jar;/ECLIPSE_workspace/LIBs/edtftpj-2.0.3/lib/edtftpj.jar;/ECLIPSE_workspace/LIBs/SerialIO/Serialio.jar;/ECLIPSE_workspace/LIBs/foxtrot-3.0/lib/foxtrot-core-3.0.jar;/ECLIPSE_workspace/LIBs/swingx-1.6/swingx-1.6.jar;/ECLIPSE_workspace/LIBs/WinRegistry V4.4/WinRegistry-4.4.jar"/>
<injar path="${dist}/lib/w_org.jar"/>
<outjar location="${dist}/lib/${jarname}" />
</proguard>
[/XML]

Ich habe nun leider weder eine Idee, was mir diese Meldung sagen soll noch wie ich damit umgehen soll :-(
Was soll das für eine "super class" sein?

Zur Info: WinXP SR3 und Java 6.37

Danke und Gruß
Klaus
 
Moin Slater,

dass man das bei fast 1000 Postings noch posten muss ist nicht meine Schuld, einfach mit dranschreiben wenn schon gesehen,
sorry, das habe ich nicht ganz verstanden ... ???:L


also: schon Fehlermeldung in eine Suchmaschine eingetippt?
->
java - Error: Can't find common super class of - Stack Overflow
Ja schon, aber wohl nicht nur mit "find common super class of", weshalb ich wohl nicht auf den Link gestossen bin.

Erstmal Danke dafür - werde ich mir gleich mal zu Gemüte führe 🙂

Gruß
Klaus
 
sorry, das habe ich nicht ganz verstanden ... ???:L

es war damit gemeint das man es als aktiver user sowohl hier mit mitlerweile gut 1k posts als auch drüben auf tut.de mit einer betrachtlichen anzahl eigentlich wissen sollte das man sowas erstmal googled bevor man hier fragt ...

und erlich : "proguard Can't find common super class of" bei google eingeben liefert als erstes den link von stackoverflow und als zweites die eigene help-site von proguard ...

laut info besagt die fehlermeldung das die referenz-klasse nicht gefunden werden konnte ...
natürlich verwirrt das gerade bei klasse aus java.lang ... aber man findet auf der proguard-seite auch die info das wenn sich proguard über sowas beschwert auch "rt.jar" mit in den input-path aufzunehmen ist ...

wobei mir persönlich eh rätzelhaft ist warum du einen StringBuffer anstatt eines StringBuilder verwendest ... der einzige sinn wäre wenn multi-threaded auf eine instanz zugegriffen wird und man sich selbst das syncen sparen will ...

außerdem sollte folgendes angemerkt werden : Proguard 4.4 auf XP SP3 mit Java6 > hä?
man muss es leider direkt sagen : alle drei versionen sind mitlerweile schlicht veraltet ... und was wissen wir von zu alten versionen : das diese sehr gerne einfach mal rum buggen ... ergo könnte dein fehler auch einfach durch einen bug entstanden sein den es in aktuellen versionen nicht mehr gibt da er gefixt wurde (wobei natürlich der unterschied XP > 7 hier keinen einfluss haben sollte)

proguard gibt es mitlerweile in v4.8 ... und auch Java ist nach dem major 7 mitlerweile dank update 9 recht stabil ... außerdem gibt es einige neue spielzeuge wie z.b. NIO.2 File
denk also mal über ein update nach ... vielleicht hätte das dein problem auch gelöst ...
 
Moin,

es war damit gemeint das man es als aktiver user sowohl hier mit mitlerweile gut 1k posts als auch drüben auf tut.de mit einer betrachtlichen anzahl eigentlich wissen sollte das man sowas erstmal googled bevor man hier fragt ...

und erlich : "proguard Can't find common super class of" bei google eingeben liefert als erstes den link von stackoverflow und als zweites die eigene help-site von proguard ...
Entschuldigung, dass ich es nach so vielen Posts wage, hier eine (vielleicht) dumme Frage zu stellen - .... und ggf. nicht die richtigen Webseiten zu finden 😱


laut info besagt die fehlermeldung das die referenz-klasse nicht gefunden werden konnte ...
natürlich verwirrt das gerade bei klasse aus java.lang ... aber man findet auf der proguard-seite auch die info das wenn sich proguard über sowas beschwert auch "rt.jar" mit in den input-path aufzunehmen ist ...
Aus dem Grund hatte ich auch mehr nach "Stringbuffer" gesucht und bin leider nicht auf den Hinweis auf der ProGuard-Seite gelandet - trotzdem Danke für die Klarstellung !
[EDIT]
Zudem habe ich ja die rt.jar im Pfad stehen, so wie es auf deren Seite angegeben ist (siehe mein erster Post) !! "libraryjar path="${java.home}/lib/rt.jar;"
[/EDIT]

wobei mir persönlich eh rätzelhaft ist warum du einen StringBuffer anstatt eines StringBuilder verwendest ... der einzige sinn wäre wenn multi-threaded auf eine instanz zugegriffen wird und man sich selbst das syncen sparen will ...
"multi-threaded" ist genau das Stichwort!
Außerdem reden wir hier von einer mit Altlasten gespickten Anwendung, die ich übernehmen musste ...

außerdem sollte folgendes angemerkt werden : Proguard 4.4 auf XP SP3 mit Java6 > hä?
man muss es leider direkt sagen : alle drei versionen sind mitlerweile schlicht veraltet ... und was wissen wir von zu alten versionen : das diese sehr gerne einfach mal rum buggen ... ergo könnte dein fehler auch einfach durch einen bug entstanden sein den es in aktuellen versionen nicht mehr gibt da er gefixt wurde (wobei natürlich der unterschied XP > 7 hier keinen einfluss haben sollte)

proguard gibt es mitlerweile in v4.8 ... und auch Java ist nach dem major 7 mitlerweile dank update 9 recht stabil ... außerdem gibt es einige neue spielzeuge wie z.b. NIO.2 File
denk also mal über ein update nach ... vielleicht hätte das dein problem auch gelöst ...
Es gibt hier in der Firma sehr gute Gründe dafür, dass wir immer XP SP3 mit Java6 verwenden, das werde ich hier aber nicht diskutieren !!


Danke und Gruß
Klaus
 
Zuletzt bearbeitet:
also der Hinweis aus meinem Link oben, nach 1 Min. zu finden, war

"Above error is now fixed, with the using of "-dontskipnonpubliclibraryclasses""

falls klar sein sollte wie wo wann man das angeben kann, was immer die Vorgänge sind
 
Moin,

... gestrichen ....

[EDIT]
ah, ok - in build.xml muss es heißen "skipnonpubliclibraryclasses="false" ........ ;(
[/EDIT]
 
Zuletzt bearbeitet:

Zurück
Oben