2013-04-22 37 views
0

我有一個非常奇怪的情況。我有一套eclipse插件項目,我正在使用tycho和maven來構建它們。我在其中一個項目中使用了JDBC驅動程序,並且我有一個測試插件來測試此項目。由於com.mysql.jdbc插件在eclipse p2存儲庫中不可用(並且我們沒有自己的p2),因此我導入了jdbc插件並創建了一個OSGi插件,並將依賴項添加到我的本地插件中。JUnit測試在java.lang.ClassNotFoundException中失敗:Tycho環境中的com.mysql.jdbc.Driver

我有多個eclipse工作空間坐起來。只有在創建測試和jdbc插件的第一個工作空間中,junit測試正在運行,當我使用eclipse運行它們作爲 - > Junit測試命令時。當其他人,甚至我籤的源代碼,並嘗試運行在不同的工作區中的試驗,這將引發異常:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 

我也利用第谷的集成測試(乳寧MVN集成測試)試圖但這並不既不工作,我仍然得到同樣的例外。我試圖尋找這個很多,但我找不到答案。

更新:我認爲這不是一個tycho問題。我只是嘗試基於com.jdbc.mysql jar創建eclipse插件。我創建這個工作區正常工作。但是,只要我提交代碼並將項目導入另一個工作區,測試就會停止工作。所有設置在兩個工作空間中都是相同的,其中一個工作,另一個獲取ClassNotFound異常!

+0

我有一個非常類似的問題,我以爲我錯過了在Tycho/EclipseRCP環境中使用Junit的一些東西。所以上週,我問了這個問題:http://stackoverflow.com/questions/16166866/how-to-follow-test-first-approach-with-equinox-osgi-tycho-eclipse-rcp-enviro 現在我對這個問題有更多的暗示,我簡單地將它解釋爲oberlies的回答下的一個評論。我假設系統/配置級別有問題。此外,我認爲以下關於配置的所有答案只有在您根本無法運行測試時纔會有所幫助。 – 2013-04-29 10:12:16

回答

0

Tycho基於測試包的傳遞依賴性計算OSGi運行時。 你可能對MySQL的驅動程序軟件包沒有設計時的依賴(而只是對JDBC接口它實現)

嘗試增加對MySQL JDBC驅動程序包測試運行時依賴。 有關如何操作,請參閱http://wiki.eclipse.org/Tycho/FAQ#How_to_add_a_undeclared_dependency.3F__.28e.g..2C_OSGi_declarative_service.29

+0

我試着向JDBC添加依賴關係,但不幸的是這並沒有解決問題。 – rozagh 2013-04-25 18:12:19

0

ClassNotFoundException s在OSGi運行時中表明OSGi清單中的導入和/或導出聲明存在錯誤。最常見的情況是bundle聲稱導出某個包,但實際上並沒有該包的二進制文件/類文件。

在Tycho構建中,如果build.properties中的bin.includes屬性中沒有條目.,則很容易發生這種情況。

+0

感謝@oberlies,但我之前檢查過這些。包已導出,構建屬性正確。但是我仍然得到了classNotFoundException! – rozagh 2013-04-25 18:11:11

相關問題