2015-02-07 22 views
0

我正在使用Eclipse來編譯&運行Java應用程序。我創建了幾個項目,我將它們作爲jar文件導出並導入(將其添加到構建路徑中)作爲其他項目中的jar文件導出。我添加的jar如下:爲什麼我在使用使用poi jar的jar時得到java.lang.NoClassDefFoundError

  • 副本罐子的項目,我想
  • 右擊罐子 - >構建路徑 - >添加到構建路徑

這是我第一次我得到這個錯誤:

java.lang.NoClassDefFoundError

我創建了一個使用POI罐子的項目。項目名稱是「A」。我將這個項目導出到A.jar文件並在B項目中導入它(添加到構建路徑)。 當我運行的B類項目,並嘗試初始化(調用構造函數)從a.jar文件的對象,我發現了以下錯誤:

java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/CellStyle

我選了以下主題:

但沒找到答案。

  1. 爲什麼我得到這個錯誤?這不是我第一次,我正在導入/添加到構建路徑。但是現在我得到一個錯誤。

  2. 我該如何解決?

回答

1
  1. 你得到的錯誤,因爲類加載器沒有找到類。

  2. 您必須將包含類poi-<version>.jar的jar添加到類路徑中。

構建路徑只定義了編譯器的路徑。它沒有定義該類在運行時位於類路徑中。

+0

謝謝。所以如果我有項目A.jar和項目B.jar使用A.jar。那麼使用B.jar的項目C jar必須包含A.jar和B.jar?爲什麼只包含B.jar是不夠的(似乎是正確的邏輯方式......不是?) – user3668129 2015-02-07 16:34:36

+0

@ user3668129因爲A.jar不包含B.jar。如果你使用像Maven這樣的深度管理,它將會管理這種依賴。 – Jens 2015-02-07 16:38:24

相關問題