2013-06-26 9 views
6

Angesichts einer Java-Anwendung, die mit Leistung geschrieben wurde (d. H. Methoden werden absichtlich nicht im Quellcode "strictfp" deklariert), ist es möglich, Benutzern zu ermöglichen, die gesamte Anwendung im strictfp-Modus auszuführen?Erzwinge alle Java-Arithmetik zur Laufzeit strictfp mit javassist?

Es sieht wie ein grober Ansatz wäre, einfach das Attribut "strictfp" zu allen Methoden aller Klassen mit einem benutzerdefinierten Klassenlader hinzuzufügen, der mit javassist geschrieben wurde. Dies würde ähnlich sein:

http://www.verious.com/qa/no-strictfp-in-scala-workarounds/

Allerdings müsste der Klassenlader die strictpf Attribut alle Klassenmethoden in der Anwendung, auch private hinzuzufügen. (Die Anwendung ist einfach zu groß und komplex, um explizit alle möglichen Methoden auflisten, die das strictfp Attribut requre könnten.)

Das Reflection-API in Javassist nicht Auflistung private Methoden zu unterstützen scheint:

http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/html/javassist/CtClass.html#getMethods()

Was kann ich in javassist (oder überhaupt über den Custom-Class-Loader-Ansatz) machen?

+0

Haben Sie 'getDeclaredBehaviors()' ausprobiert? – Antimony

Antwort