我想從commons-codec 1.5使用Base64類,當我在服務器上運行代碼時,這很好。我的應用程序運行在Websphere 7.0上。JUnit使用錯誤的Base64
但是當我運行我的JUnit測試錯誤Base64編碼類是choosen,當我詢問學生有:
System.out.println(Base64.class.getProtectionDomain().getCodeSource().getLocation());
輸出爲:文件:/ C:/ EProg/IBM/SDP80 /運行時間/base_v7/plugins/com.ibm.ws.prereq.soap.jar
這就是錯誤的版本。
並出現因爲錯誤版本的錯誤:
java.lang.NoSuchMethodError: org/apache/commons/codec/binary/Base64.decodeBase64(Ljava/lang/String;)
瘋狂的事情是,出現這種情況只有它我選擇一個試驗及運行方式運行:在Eclipse JUnit測試,如果我跑了整個Maven everthing的工作正常。
我使用JUnit 4.8.1和Eclipse靛藍服務發佈2與一些插件對於WebSphere,GWT和Maven.``
我使用M2E,並在Maven的依賴文件夾/容器everthing似乎是好的。而且我使用Maven運行JUnit測試。但是當我使用Eclipse/JUnit運行它們時,它使用了錯誤的Base64類。我還沒有找到一個地方在Eclipse中配置JUnit以僅使用Maven依賴關係。我想用Eclipse/JUnit運行它的原因是因爲我想調試我的測試。在使用Maven運行JUnit測試時進行調試是一個非常糟糕的解決方案。 –
我想出瞭如何讓JUnit測試運行,但這不是真正的解決方案,它只能幫助我調試測試:右鍵單擊測試所屬的Maven模塊 - > Properties - > Java Build Path - >庫 - >刪除WebSphere Application Server V7.0。現在我可以調試我的測試,但是必須重新添加服務器之後。所以對我來說,這不是處理這個問題的理想方法。 –
我仍然認爲這個問題是因爲Maven與eclipse集成在一起的。 Eclipse不是我的主IDE,所以我可能是錯的,但是你可以嘗試右鍵單擊 - >在「Maven」選項下 - >啓用依賴管理。另外,如果您在POM中添加了服務器依賴項,您是否也可以將範圍更改爲「提供」 –