2016-04-21 76 views
-1

我在另一個行家項目乙加入行家項目A作爲依賴性,然後通過反射訪問由乙創建的罐子在另一個項目添加一個行家項目作爲相關性,但其在投擲NoClassDefFound錯誤的類Maven項目一我在另一個行家項目

我的問題是,如何使項目類項目B的類路徑中可見?我嘗試添加MANIFEST.MF,但似乎只適用於jar和類文件。所有幫助讚賞。

回答

0

自然行家依賴由四元組(四對事物的集合)中規定:GroupIDArtifactIDversion,而經常被遺忘scope。前三個統稱爲GAV的依賴關係。 scope確定在運行時如何利用依賴關係。

在你的情況,似乎是發生的是以下幾點:

  1. 項目A編譯和安裝在本地的回購協議(例如,使用mvn install命令)。
  2. 在項目B的pom.xml中,您將項目A的GAV指定爲正確的<dependecy>聲明,並且編譯和打包似乎已經過了。
  3. 但由於項目B的最終JAR不具有項目A的等級,運行項目B,因爲A的類沒有發現失敗。

基本上,你需要告訴Maven的依賴關係的範圍。就你而言,由於項目A的類在預定義運行時(例如Tomcat或GlassFish Web容器)上不可用,因此需要確保將它們與項目B的JAR文件捆綁在一起。

這是您需要一個插件連接到構建生命週期的階段。

見的maven-JAR-插件或Maven遮陽簾插件就如何使項目A的類項目B的最終JAR文件的一部分細節。

這是假設你是爲運行中的類B:java -jar projectB-full.jar