Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行旧JAR文件代码的欢乐_Java_Deployment_Jar_Mirth - Fatal编程技术网

Java 运行旧JAR文件代码的欢乐

Java 运行旧JAR文件代码的欢乐,java,deployment,jar,mirth,Java,Deployment,Jar,Mirth,这真的快把我逼疯了。不管我做什么,看起来Mirth(1.8.2)正在运行我的JAR文件的旧版本;我知道是因为各种迹象,比如: 我不能调用任何函数 记录的信息未显示在日志中 更改的日志消息不会在日志文件中更改 曾经在代码中创建和写入但不再被代码触及的文件仍在创建和写入中 我已经想尽一切办法让这一切顺利。它曾一度有效,但现在似乎不再更新了。我将我的改变融入欢乐的过程是: 运行ant脚本来构建JAR文件 将JAR文件复制到\lib\custom 重新启动Mirth服务(通过Mirth admin

这真的快把我逼疯了。不管我做什么,看起来Mirth(1.8.2)正在运行我的JAR文件的旧版本;我知道是因为各种迹象,比如:

  • 我不能调用任何函数
  • 记录的信息未显示在日志中
  • 更改的日志消息不会在日志文件中更改
  • 曾经在代码中创建和写入但不再被代码触及的文件仍在创建和写入中
我已经想尽一切办法让这一切顺利。它曾一度有效,但现在似乎不再更新了。我将我的改变融入欢乐的过程是:

  • 运行ant脚本来构建JAR文件
  • 将JAR文件复制到\lib\custom
  • 重新启动Mirth服务(通过Mirth administrator)
我尝试过重新启动(通过服务、Java、计算机的快乐服务)——但没有成功。我知道我的JAR文件是正确的,因为我已经对它进行了反编译(以确保它有最新的代码)并对它进行了散列(以与ant构建的JAR的散列进行比较)——它是正确的,代码就在那里;它只是没有被运行

我已经智穷了;这种情况很少发生,但完全阻碍了我的发展

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

我的课程很简单;简单的单参数构造函数和一些返回各种数据的公共方法。不复杂,没有嵌套的类/JAR/依赖项

编辑:我甚至删除了我的自定义JAR文件并重新启动了Mirth,它仍然在运行我的代码。太棒了:/我已经为这个问题添加了悬赏。我怀疑JAR被缓存在某个地方(尽管他们在欢乐论坛上否认了这一点),需要以某种方式清除缓存(尽管我无法理解为什么重启欢乐服务而我的电脑不这样做)

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


我试图重新安装Mirth。由于某种原因,当我第一次启动管理员时,它有我的自定义频道;令人恼火的是,它仍然在运行旧的JAR,尽管我在lib\custom中用新的JAR更新了它。

Mirth是一个运行在普通的旧JVM上的J2EE应用程序;您可以选择调试它

您可以按照说明通过Eclipse运行Mirth Connect。然后可以看到JVM类路径,可以设置断点并使用调试器

Mirth基于Mule ESB。Mule有自己的类加载方式。你可以研究一下

如果Mirth真的在使用旧版本的JAR,那么它可能在某个地方有一个缓存版本。或者您做了一些您已经忘记的配置更改—或者您为JAR添加了一个新目录。(不知道你是怎么做到的。)

Mule关注一个名为Mule_LIB的环境变量;也许这是相关的


看起来,mirthconnect1.8和mirthconnect2.0在jar中有不同的位置(分别是lib/custom和customlib)。您使用的是哪个版本?

Mirth是一个运行在普通旧JVM上的J2EE应用程序;您可以选择调试它

您可以按照说明通过Eclipse运行Mirth Connect。然后可以看到JVM类路径,可以设置断点并使用调试器

Mirth基于Mule ESB。Mule有自己的类加载方式。你可以研究一下

如果Mirth真的在使用旧版本的JAR,那么它可能在某个地方有一个缓存版本。或者您做了一些您已经忘记的配置更改—或者您为JAR添加了一个新目录。(不知道你是怎么做到的。)

Mule关注一个名为Mule_LIB的环境变量;也许这是相关的


看起来,mirthconnect1.8和mirthconnect2.0在jar中有不同的位置(分别是lib/custom和customlib)。您使用的是哪个版本?

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

  • 卸载Mirth和Java,然后重新安装
  • 我还删除了除一个(一个JDK和一个JRE)之外的所有Java安装
  • 当你复制我的罐子时,我停止了欢笑。停止欢笑,复制,然后重新开始;不要尝试在实时安装上进行复制。它可能会也可能不会拾取更新的JAR,这取决于它是否加载到JVM中

这些步骤的组合似乎奏效了。在此之前,我安装了3-4个JRE(和两个JDK),并在Mirth运行时复制(根据Windows7,复制成功)JAR。现在开始工作了

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

  • 卸载Mirth和Java,然后重新安装
  • 我还删除了除一个(一个JDK和一个JRE)之外的所有Java安装
  • 当你复制我的罐子时,我停止了欢笑。停止欢笑,复制,然后重新开始;不要尝试在实时安装上进行复制。它可能会也可能不会拾取更新的JAR,这取决于它是否加载到JVM中

这些步骤的组合似乎奏效了。在此之前,我安装了3-4个JRE(和两个JDK),并在Mirth运行时复制(根据Windows7,复制成功)JAR。现在开始工作了

我用的是1.8。我将研究如何通过Eclipse进行调试;这是一个了不起的工具,如果它能工作的话。调试JavaScriptJava是非常非常痛苦的。听起来你遇到的问题不是JS J级别的,所以你不必去那里。这对于我来说是一种非常麻烦的方法来找出正在执行的JAR代码。我真的很想知道我需要做什么才能让最新的JAR真正加载到Mirth中。我使用的是1.8。我将研究调试th