java中的动态注释更改

java中的动态注释更改,java,reflection,playframework,annotations,hotswap,Java,Reflection,Playframework,Annotations,Hotswap,我必须在运行时更改java中模型类的注释。 这个场景出现在我的网页上,当我更改drop down的值并单击apply按钮时,我有一个下拉列表,我必须根据下拉列表的值在我的模型类上添加注释 为此,我使用JavaAssist在类上添加注释。我认为注释已正确应用,但无法重新加载该类。我试着用HotswapAgent做这件事。但它看起来不起作用 我正在使用play框架 我们将非常感谢您的帮助 ClassPool pool= Enhancer.newClassPool(); CtClass cc = po

我必须在运行时更改java中模型类的注释。 这个场景出现在我的网页上,当我更改drop down的值并单击apply按钮时,我有一个下拉列表,我必须根据下拉列表的值在我的模型类上添加注释

为此,我使用JavaAssist在类上添加注释。我认为注释已正确应用,但无法重新加载该类。我试着用HotswapAgent做这件事。但它看起来不起作用

我正在使用play框架

我们将非常感谢您的帮助

ClassPool pool= Enhancer.newClassPool();
CtClass cc = pool.get("Test");
ClassFile cf = cc.getClassFile(); 
ConstPool cp = cf.getConstPool();
// Code for creating and adding annotation comes here.....
ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
DataOutputStream os = new DataOutputStream(bos);
cf.write(os);
os.close(); 
ClassDefinition cd = new ClassDefinition(Test.class, bos.toByteArray()); 
HotswapAgent hh = new HotswapAgent();
hh.reload(cd);

请尝试这个,如果使用相同的类加载器,您可以加载它


您需要添加代码示例,并对您要实现的目标更加准确。此外,当遇到错误时,最好添加堆栈跟踪。您在问题中投入的精力/细节越多,就越有可能得到相关的答案。ClassPool=Enhancer.newClassPool()
CtClass cc=pool.get(“测试”)
ClassFile cf=cc.getClassFile()
ConstPool cp=cf.getConstPool()
//创建和添加注释的代码出现在这里….
ByteArrayOutputStream bos=new ByteArrayOutputStream()
DataOutputStream os=新的DataOutputStream(bos)
cf.write(操作系统)
os.close();ClassDefinition cd=新的ClassDefinition(Test.class,bos.toByteArray())
HotswapAgent hh=新的HotswapAgent()
hh.重新加载(cd);如果你自己不努力回答这个问题,你就不能指望任何人在回答和提问时付出努力。您的代码应该作为问题的一部分进行格式化,您应该说明您试图实现的目标,并显示您可能遇到的任何错误。耶…事实上,我无法在这里格式化它。我也没有得到任何错误,因为这样。好的是,现在我可以加载类并使注释正常工作了。一旦我能够格式化它,我将在代码中放置所做的更改。如果您找到了自己问题的解决方案,请发布它的答案,以便遇到相同问题的任何人都可以找到解决方案。