我們有一個奇怪的問題。我們正在使用自動測試工具。 DSL在斯卡拉實施。我們用這個工具測試的系統是用Java編寫的,兩個組件之間的接口是RMI。事實上,自動測試工具的界面部分也是Java(其餘部分是Scala)。我們完全控制這些組件的源代碼。Scala中的零星java.lang.NoClassDefFoundError
我們已經擁有了數千個測試用例。我們每天晚上自動執行這些測試用例,在Linux服務器上使用Jenkins。問題是我們偶爾會收到java.lang.NoClassDefFoundError
例外。這通常發生在嘗試從Scala代碼訪問Java工件時發生。
如果我們手動執行相同的測試用例,或者檢查下一次夜間運行的結果,那麼問題通常會自動解決,但有時它會再次發生在完全不同的地方。在某些運行情況下,根本不會出現這種問題。最大的問題是錯誤不可重現;此外,正如在自動運行情況下發生的那樣,我們幾乎沒有關於確切情況的任何信息,只是測試用例和日誌。
有人遇到過這樣的問題嗎?你有什麼想法如何繼續?任何提示或信息都將有所幫助,不僅是問題的解決方案。謝謝!
你如何構建你的Scala組件和Java? Java工件有時可能還沒有被編譯,而Scala代碼有,並且正在嘗試運行它。 – diginoise
我們使用Maven完成構建和運行過程。感謝提示!我將檢查是否可能發生測試用例在一個進程中運行,而另一個進程只是編譯Java代碼。理論上這不應該發生,但是,理論和實踐可能會有所不同...... –
請確保將每種語言的構建器附加到相應的Maven構建階段。這是一個使用scala插件的例子:http://davidb.github.io/scala-maven-plugin/example_java.html – diginoise