微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 如何集成beanshell

我正在开发一个基于 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 举报,一经查实,本站将立刻删除。

相关推荐