当尝试仪器类时java.util.ArrayList
,我得到了java.lang.instrument.UnmodifiableClassException
.
你可以检查一个类是否可以使用Instrumentation.isModifiableClass()
.
我的问题是:
- 哪些类是不可修改的?它是如何确定的。
- 有没有办法绕过这个?
顺便说一句,我在使用 HotSpot 或 Jrocking 时没有遇到此异常,仅使用 IBM JVM。
谢谢,吉拉德
当尝试仪器类时java.util.ArrayList
,我得到了java.lang.instrument.UnmodifiableClassException
.
你可以检查一个类是否可以使用Instrumentation.isModifiableClass()
.
我的问题是:
顺便说一句,我在使用 HotSpot 或 Jrocking 时没有遇到此异常,仅使用 IBM JVM。
谢谢,吉拉德
你应该调用isModifiableClass
你的仪器
boolean isModifiableClass(Class<?> theClass)
在这里寻找参考
确定一个类是否可以通过重新转换或重新定义来修改。如果类是可修改的,则此方法返回 true。如果类不可修改,则此方法返回 false。 对于要重新转换的类,isRetransformClassesSupported() 也必须为真。但是 isRetransformClassesSupported() 的值不影响这个函数的返回值。对于要重新定义的类,isRedefineClassesSupported() 也必须为真。但是 isRedefineClassesSupported() 的值不影响这个函数的返回值。
原始类(例如 java.lang.Integer.TYPE)和数组类永远不可修改。