这真的让我发疯。无论我做什么,似乎 Mirth (1.8.2) 正在运行我的 JAR 文件的旧版本;我知道是因为各种迹象,例如:
- 我不能调用任何函数
- 记录的信息未显示在日志中
- 更改的日志消息不会在日志文件中更改
- 曾经在代码中创建和写入但不再被代码触及的文件仍在创建和编写中
我已经尝试了我能想到的一切来完成这项工作。它曾一度工作,但现在似乎不再更新。我将更改整合到 Mirth 中的过程是:
- 运行 ant 脚本来构建 JAR 文件
- 将 JAR 文件复制到 \lib\custom
- 重启 Mirth 服务(通过 Mirth 管理员)
我试过重新启动(通过服务、Java、计算机的 Mirth 服务)——但无济于事。我知道我的 JAR 文件是正确的,因为我已经对其进行了反编译(以确保它具有最新的代码)并对其进行哈希处理(以与 ant 构建的 JAR 的哈希值进行比较)——它是正确的并且代码在那里; 它只是没有运行。
我无计可施;这种情况很少发生,但完全阻止了我的发展。
编辑:我也知道我的代码是正确的,因为当我运行单元测试时,它会生成正确的文件并调用正确的函数并记录正确的信息。只有 Mirth 似乎“不明白”。
我的课很简单;简单的单参数构造函数和一些返回各种数据的公共方法。没什么复杂的,没有嵌套的类/JAR/依赖项。
编辑:我什至删除了我的自定义 JAR 文件并重新启动了 Mirth,它仍在运行我的代码。太棒了:/我为这个问题添加了赏金。我怀疑 JAR 被缓存在某个地方(即使他们在 Mirth 论坛上否认)并且需要以某种方式清除该缓存(尽管为什么重新启动 Mirth 服务而我的 PC 没有这样做超出了我的理解)。
我还杀死了所有 Java 实例(并重新启动了我的计算机),因此 JVM 不太可能在某处缓存 JAR。
我尝试重新安装 Mirth。出于某种原因,当我第一次启动管理员时,它有我的自定义频道;令人恼火的是,它仍在运行旧的 JAR,尽管我已经用 lib\custom 中的新 JAR 更新了它。