鉴于编写了性能的Java应用程序(即在源代码中故意不将方法声明为'strictfp'),是否可以允许用户以strictfp模式运行整个应用程序?
看起来粗略的方法是使用使用javassist编写的自定义类加载器简单地将“strictfp”属性添加到所有类的所有方法。这类似于:
http://www.verious.com/qa/no-strictfp-in-scala-workarounds/
但是,类加载器需要将strictpf属性添加到应用程序中的所有类方法,包括私有方法。 (该应用程序过于庞大和复杂,无法明确列出可能需要strictfp属性的所有可能方法。)
javassist中的反射API似乎不支持列出私有方法:
http://www.csg.ci.i.u-tokyo.ac.jp/~chiba/javassist/html/javassist/CtClass.html#getMethods()
我想在javassist中做什么(或者通过自定义类加载器方法)?
答案 0 :(得分:2)
我不知道这是否会对您有所帮助,但是如果您可以更改为使用Oracle JRockit JVM,它有一个JVM选项可以全局启用strictfp
- '-XX +: - StrictFP`
(Hotspot JVM上有一个'-XX +: - UseStrictFP'选项,但它与你想要的效果相反。)
参考: