2013-06-26 24 views
6

Với một ứng dụng Java được viết với hiệu suất trong tâm trí (nghĩa là các phương pháp cố ý không được khai báo 'strictfp' trong mã nguồn), có thể cho phép người dùng chạy toàn bộ ứng dụng ở chế độ strictfp không? Có vẻ như một cách tiếp cận thô sẽ đơn giản là thêm thuộc tính "strictfp" vào tất cả các phương thức của tất cả các lớp bằng cách sử dụng trình nạp lớp tùy chỉnh được viết bằng cách sử dụng javassist. Đây sẽ là tương tự như:Buộc tất cả số học Java để strictfp khi chạy, sử dụng javassist?

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

Tuy nhiên, bộ nạp lớp sẽ cần phải thêm thuộc tính strictpf để tất cả phương pháp lớp trong ứng dụng, bao gồm cả những người tin. (Ứng dụng này chỉ đơn giản là quá lớn và phức tạp để rõ ràng liệt kê tất cả các phương pháp có thể mà có thể requre thuộc tính strictfp.)

API phản chiếu trong Javassist dường như không hỗ trợ danh sách các phương pháp riêng:

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

Là những gì tôi muốn làm có thể trong javassist (hoặc ở tất cả thông qua các phương pháp tiếp cận bộ nạp lớp tùy chỉnh)?

+0

Bạn đã thử 'getDeclaredBehaviors()' chưa? – Antimony

Trả lời

2

Tôi không biết nếu điều này sẽ giúp bạn, nhưng nếu bạn có thể chuyển sang sử dụng Oracle JRockit JVM, nó có một tùy chọn để cho phép JVM strictfp trên toàn cầu - 'XX +: - StrictFP`

(Có là một 'XX +: - UseStrictFP' tùy chọn trên Hotspot JVM, nhưng nó đã tác động ngược lại với những gì bạn muốn)

tham khảo:.

Các vấn đề liên quan