2011-01-05 83 views
1

這真的讓我發瘋。無論我做什麼,似乎Mirth(1.8.2)都運行我的JAR文件的舊版本;我知道,因爲各種標誌,如:歡樂跑老JAR文件代碼

  • 我不能調用任何功能
  • 記錄的信息沒有顯示在日誌中
  • 更改日誌消息沒有在日誌文件中改變了
  • 曾經創建並寫入代碼但不再被代碼觸及的文件仍在創建和編寫中

我試過了所有我能想到的工作。它工作在一個點上,但現在看起來它不再被更新。我的過程中我的變化融入歡樂是:

  • 運行Ant腳本構建JAR文件
  • 複製JAR文件\ LIB \定製
  • 重新啓動歡樂服務(通過歡樂管理員)

我試過重新啓動(通過服務,Java,計算機的歡樂服務) - 無濟於事。我知道我的JAR文件是正確的,因爲我已經對它進行了反編譯(以確保它具有最新的代碼)並對其進行散列處理(與螞蟻構建的JAR的散列進行比較) - 它是正確的,代碼在那裏;它只是沒有運行。

我很機智,這很少發生,但完全阻止了我的發展。

編輯:我也知道我的代碼是正確的,因爲當我運行單元測試時,它會生成正確的文件並調用正確的函數並記錄正確的信息。只有歡樂似乎「不明白」。

而且我的課很簡單;簡單的單參數構造函數和一些返回各種數據的公共方法。沒有什麼複雜的,沒有嵌套的類/ JARs /依賴關係。

編輯:我甚至刪除了我的自定義JAR文件並重新啓動Mirth,它仍在運行我的代碼。太棒了:/我爲這個問題添加了一筆賞金。我懷疑JAR會被緩存到某處(即使他們在Mirth論壇上否認它),並且緩存需要以某種方式清除(儘管爲什麼重新啓動Mirth服務以及我的PC不這麼做)超出了我的想象。我已經殺死了Java的所有實例(並重新啓動了我的計算機),所以這使JVM很難將JAR緩存到某個地方。

我試過重新安裝歡樂。出於某種原因,我第一次啓動管理員時擁有自定義頻道;令人憤慨的是,它仍然在運行舊的JAR,即使我已經在lib \ custom中使用新的JAR進行了更新。

回答

1

我結束了動作的組合解決這個:

  • 卸載歡樂和Java,然後再重新安裝。
  • 我還刪除了除一個(一個JDK和一個JRE)之外的所有Java安裝。
  • 當你複製我的JAR時停止歡樂。停止歡樂,複製並重新啓動;不要嘗試複製現場安裝。它可能會也可能不會拾取更新的JAR,具體取決於它是否加載到JVM中。

這個步驟的組合似乎工作。在此之前,我安裝了3-4個JRE(和兩個JDK),並且我在Mirth正在運行時複製(根據Windows 7成功)JAR。它正在工作!

0

Mirth是一個運行在普通舊JVM上的J2EE應用程序;你可以選擇調試它。

您可以按照說明here通過Eclipse運行Mirth Connect。然後您可以看到JVM類路徑,您可以設置斷點並使用調試器。

歡樂是基於騾ESB。騾子有自己的課堂加載方式。你可以研究它。

如果Mirth真的使用舊版本的JAR,也許它的某個地方有一個緩存版本。或者,也許你做了一些你忘記了的配置更改 - 也許你爲jar添加了一個新的目錄。 (不知道你是怎麼做到的。)

Mule注意到一個名爲MULE_LIB的環境變量;也許這是相關的。

它看起來像Mirth連接1.8和Mirth連接2.0有不同的地方罐(lib /自定義和自定義lib,分別)。你正在使用哪個版本?

+0

我正在使用1.8。我將研究通過Eclipse進行調試;如果它有效,這是一個了不起的工具。調試Javascript <=> Java非常非常痛苦。 – ashes999 2011-01-05 22:23:02

+0

這聽起來像你遇到的問題不在JS <-> J級別,所以你不應該去那裏。 – Ladlestein 2011-01-06 00:10:09

+0

這對我來說是一個非常麻煩的方式,以找出哪些JAR代碼正在執行。我真的很想知道我需要做什麼才能讓最新的JAR實際加載到Mirth中。 – ashes999 2011-01-09 20:35:21