2013-06-26 9 views
6

パフォーマンスを考慮して作成されたJavaアプリケーション(つまり、メソッドは意図的にソースコード内で厳密に 'strictfp'と宣言されていません)を指定すると、ユーザーはアプリケーションをstrictfpモードで実行できますか?javassistを使用して、実行時にすべてのJava演算をstrictfpに強制しますか?

javassistを使用して作成されたカスタムクラスローダーを使用して、すべてのクラスのすべてのメソッドに単純に "strictfp"属性を追加するのは粗末なアプローチのようです。これは次のようになります。

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

しかし、クラスローダは、専用のものを含む、アプリケーション内のすべてのクラスメソッドにstrictpf属性を追加する必要があります。 (。アプリケーションは、単に明示的にstrictfpの属性をrequre可能性のあるすべての可能な方法をリストするには大きすぎると複雑です)

Javassistの中リフレクションAPIは、プライベートメソッドをリストサポートしていないよう:

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

javassistで(またはカスタムクラスローダのアプローチで)できることは何ですか?

+0

'getDeclaredBehaviors()'を試しましたか? – Antimony

答えて

2

これはあなたを助けるかどうかは知りませんが、あなたは、OracleのJRockit JVMを使用するように変更することができれば、それは世界的にstrictfpを有効にするには、JVMオプションを持っている - 「-XX +: - StrictFP`

(ありである。 '-XX +: - UseStrictFP' ホットスポットのJVM上のオプションは、それはあなたが望むものとは逆の効果があります)

参考:

関連する問題