【发布时间】:2010-06-08 16:08:02
【问题描述】:
我正在使用 JRuby 编写 Java 脚本。通过使用 JRebel,我可以自动将更改的 Java 类重新加载到 JRuby JVM 中,而无需重新启动。当我添加一个新的 Java 方法时,JRebel 会自动重新加载该类。我的问题是我不能直接调用这个新方法。我可以要求 JRuby 为新加载的 Java 类刷新其方法缓存吗?我唯一的解决方法是使用 java_send 反射性地调用新方法。
例子:
步骤 1. 启动 irb 会话并 java_import 一个 Java 类(比如 Person)。
步骤 2. 为 Person 添加一个 getName 方法并编译。
步骤 3. 创建一个 Person 实例 (p = Person.new)。 JRebel 将显示它重新加载了 java 类。
第 4 步。调用 p.get_name 会导致 NoMethodError,但 p.java_send('getName') 会调用新实现的 getName 方法
【问题讨论】:
标签: jruby