java - Mirth 运行旧 JAR 文件代码

标签 java deployment jar mirth

这真的让我发疯。无论我做什么,Mirth (1.8.2) 似乎都在运行我的 JAR 文件的旧版本;我知道是因为各种迹象,例如:

  • 我无法调用任何函数
  • 记录的信息未显示在日志中
  • 更改的日志消息不会在日志文件中更改
  • 曾经在代码中创建和写入但不再被代码触及的文件仍在创建和写入

我已经尝试了一切我能想到的方法来完成这项工作。它曾经一度可以工作,但现在似乎不再更新。我将更改融入 Mirth 的过程是:

  • 运行 ant 脚本来构建 JAR 文件
  • 将 JAR 文件复制到\lib\custom
  • 重新启动 Mirth 服务(通过 Mirth 管理员)

我尝试重新启动(通过服务、Java、计算机进行 Mirth 服务),但没有成功。我知道我的 JAR 文件是正确的,因为我已经对其进行了反编译(以确保它具有最新的代码)并对它进行了哈希处理(以与 ant 构建的 JAR 的哈希值进行比较)——它是正确的并且代码就在那里;它只是没有运行。

我已经无计可施了;这种情况很少发生,但完全阻碍了我的发展。

编辑:我也知道我的代码是正确的,因为当我运行单元测试时,它会生成正确的文件并调用正确的函数并记录正确的信息。只有 Mirth 似乎“不明白”。

而且我的类(class)非常简单;简单的单参数构造函数和一些返回各种数据的公共(public)方法。没有什么复杂的,没有嵌套的类/JAR/依赖项。

编辑:我什至删除了自定义 JAR 文件并重新启动 Mirth,它仍然在运行我的代码。太棒了:/我已经为这个问题添加了赏金。我怀疑该 JAR 已缓存在某处(尽管他们在 Mirth 论坛上否认了这一点),并且该缓存需要以某种方式清除(尽管为什么重新启动 Mirth 服务而我的电脑却无法执行此操作超出了我的范围)。

我还终止了所有 Java 实例(并重新启动了我的计算机),因此 JVM 不太可能在某处缓存 JAR。

我尝试重新安装 Mirth。出于某种原因,当我第一次启动管理员时,它有我的自定义 channel ;令人恼火的是,它仍然运行旧的 JAR,尽管我已经在 lib\custom 中使用新的 JAR 对其进行了更新。

最佳答案

我最终通过一系列操作解决了这个问题:

  • 卸载 Mirth 和 Java,然后重新安装。
  • 我还删除了除一个(一个 JDK 和一个 JRE)之外的所有 Java 安装。
  • 当你复制我的 JAR 时,我停止了 Mirth。停止 Mirth,复制,然后重新启动;不要尝试复制实时安装。它可能会也可能不会获取您更新的 JAR,具体取决于它是否已加载到 JVM 中。

这种步骤组合似乎有效。在此之前,我安装了 3-4 个 JRE(以及两个 JDK),并且在 Mirth 运行时复制(根据 Windows 7,成功)JAR。现在正在工作!

关于java - Mirth 运行旧 JAR 文件代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4608395/

相关文章:

java - ElasticSearch Java API : Client creation

java - POM导入JGraphT nio包

java - super ()难题

deployment - 为什么网络服务器将端口 80 用于实际应用程序?

c# - 如何防止应用程序被标记为可疑

git - 从本地存储库中已经存在的本地文件创建远程存储库

android - 生成用于代码分发的混淆 JAR

java - 使用 ojdbc14.jar 插入 CLOB - JAVA

java - 安装自己的eclipse插件后没有反应

java - 编译 java 文件和包