[jboss-user] [Javassist user questions] - Problem Instrumenting System classes
mansu
do-not-reply at jboss.com
Thu Jun 26 11:19:55 EDT 2008
Hi all,
I am trying to instrument java.lang.String class. For starters, I tried using the example code in the javassist manual, but it doesn't seem to work.
The class that adds a new field to the java.lang.String is as follows:
| package sample;
|
| import javassist.*;
|
| public class AddFieldToString {
|
| public int f(int i) {
| return i + 1;
| }
|
| public static void main(String[] args) throws Exception {
| ClassPool pool = ClassPool.getDefault();
| CtClass cc = pool.get("java.lang.String");
| cc.addField(new CtField(CtClass.intType, "hiddenValue", cc));
| cc.writeFile(".");
| }
| }
|
A sample application is as follows:
| package sample;
|
| public class MyApp {
| public static void main(String[] args) throws Exception {
| System.out.println(String.class.getField("hiddenValue").getName());
| }
| }
|
After compiling and running the above program as shown below, I get a FieldNotFound exception.
| ./installs/javassist-3.8.0 % rm -rf ./java ;
| j javac -cp javassist.jar sample/AddFieldToString.java ;
| java -cp .:javassist.jar sample/AddFieldToString ;
| javac sample/MyApp.java ;
| java -Xbootclasspath/p:. sample/MyApp
|
| Exception in thread "main" java.lang.NoSuchFieldException: hiddenValue
| at java.lang.Class.getField(Class.java:1507)
| at sample.MyApp.main(MyApp.java:5)
|
I am sure that the generated code has a something about hidden field, but the decompiler is unable to find it too:
| ./installs/javassist-3.8.0 % cat java/lang/String.class | grep hiddenValue
| Binary file (standard input) matches
|
| /installs/javassist-3.8.0 % javap java/lang/String | grep hiddenValue
|
Am I missing something obvious? Any pointers would be helpful. Thanks for your time.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4160905#4160905
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4160905
More information about the jboss-user
mailing list