我正在开发一个基于
Java的组件游戏引擎,现在当我对要重建的组件进行更改并重新启动编辑器以使更改生效(或者如果应用程序正在运行,我可以使用一些有限的热代码注入调试模式).
我正在寻找一种方法来允许用户修改组件的源并重新加载它们,而无需重新启动应用程序(可能只是退出并进入游戏模式).我还需要一个重要的功能是最终导出的代码应该是本地Java代码(所以最终结果中不应该使用解释器)).
你能给我指出如何在项目中集成beanshell解释器?我可以手动监视源文件夹进行更改,并将更新的java类提供给它,但是hotswap将如何发生呢?
解决方法
首先,标题有点混乱.您不需要集成BeanShell.你实际需要的是:
>定义一个正确的架构
>使用Java Compiler API来处理java类
建筑
假设你有一个对象图.有很多的对象,引用等等,所以用一个新的实例替换一些实例真的是一个棘手的任务.而不是解决这个问题,您可以将动态部分隐藏在“静态”代理之后.代理将处理所有重新加载的东西(包括源文件夹监视).
重新加载之前:
重装后:
完成后,您可以轻松跟踪变化,并在需要时更新动态部分.
Java编译器API
而不是使用解释语言,您可以使用Java,即时编译,并使用’Class.forName()’加载.有很多不同的例子,因为这个方法有一段时间.
这里有一些细节:
> Add dynamic Java code to your application
> Compiling fully in memory with javax.tools.JavaCompiler
原文地址:https://www.jb51.cc/java/124291.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。