これは本当に私を夢中にさせています。私が何をしても、Mirth (1.8.2) は私の JAR ファイルの古いバージョンを実行しているようです。次のようなさまざまな兆候があるため、私は知っています。
- どの関数も呼び出せません
- ログに記録された情報がログに表示されない
- 変更されたログ メッセージは、ログ ファイルでは変更されません。
- かつてコードで作成されて書き込まれたが、コードに触れられなくなったファイルは、まだ作成されて書き込まれています
この作業を行うために考えられるすべてのことを試しました。一時は動作していましたが、現在は更新されていないようです。変更を Mirth に統合するプロセスは次のとおりです。
- Ant スクリプトを実行して JAR ファイルをビルドする
- JAR ファイルを \lib\custom にコピーします。
- Mirth サービスを再起動します (Mirth 管理者経由)
再起動を試みました (サービス、Java、コンピューター経由の Mirth サービス) - 役に立ちませんでした。JAR ファイルが正しいことはわかっています。なぜなら、(最新のコードが含まれていることを確認するために) JAR ファイルを逆コンパイルし、(ant でビルドされた JAR のハッシュと比較するために) ハッシュしたためです。ファイルは正しく、コードは存在します。 ; 実行されていないだけです。
私は機知に富んでいます。これはめったに発生しませんが、開発を完全に妨げます。
編集:単体テストを実行すると、適切なファイルが生成され、適切な関数が呼び出され、適切な情報が記録されるため、コードが正しいこともわかっています。マースだけが「わからない」ようです。
私のクラスはとてもシンプルです。単純な 1 つの引数のコンストラクターと、さまざまなデータを返すいくつかのパブリック メソッド。複雑なものはなく、ネストされたクラス/JAR/依存関係もありません。
編集:カスタム JAR ファイルを削除して Mirth を再起動しても、まだコードが実行されています。素晴らしい:/ この質問に報奨金を追加しました。JAR がどこかにキャッシュされているのではないかと思います (彼らは Mirth フォーラムでそれを否定していますが)、そのキャッシュを何らかの方法で消去する必要があります (ただし、なぜ Mirth サービスを再起動しても私の PC がそれを行わないのかは私には理解できません)。
また、Java のすべてのインスタンスを強制終了した (そしてコンピューターを再起動した) ため、JVM が JAR をどこかにキャッシュしている可能性はほとんどありません。
マースを再インストールしてみました。何らかの理由で、最初に管理者を起動したときにカスタム チャネルがありました。そして腹立たしいことに、lib\custom の新しい JAR で更新したにもかかわらず、まだ古い JAR を実行しています。