6

给定一个考虑性能而编写的 Java 应用程序(即在源代码中故意未将方法声明为“strictfp”),是否可以允许用户以 strictfp 模式运行整个应用程序?

看起来一种粗略的方法是使用使用 javassist 编写的自定义类加载器将“strictfp”属性简单地添加到所有类的所有方法中。这将类似于:

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

但是,类加载器需要将 strictpf 属性添加到应用程序中的所有类方法,包括私有方法。(应用程序太大太复杂,无法明确列出所有可能需要 strictfp 属性的方法。)

javassist 中的反射 API 似乎不支持列出私有方法:

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

我想在 javassist 中做些什么(或者完全通过自定义类加载器方法)?

4

1 回答 1

2

我不知道这是否会对您有所帮助,但如果您可以更改为使用 Oracle JRockit JVM,它有一个 JVM 选项可以strictfp全局启用 - '-XX+:-StrictFP`

(Hotspot JVM 上有一个 '-XX+:-UseStrictFP' 选项,但它与您想要的效果相反。)

参考:

于 2013-06-26T15:55:00.847 回答