2012-03-08 40 views
0

我已在存儲庫.m2中添加poi 3.0.2並嘗試導入HSSFCell,HSSFSheet,HSSFWorkbook,HSSFRow。它編譯沒有錯誤,當我嘗試運行應用程序時,出現錯誤。poi HSSFCell未在Spring框架中發現異常

我已經添加的依賴於核心文件夾中的pom.xml作爲

<dependency> 
     <groupId>org.apache</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.0.2</version> 
     <scope>provided</scope> 
    </dependency> 

但似乎只有HSSFCell具有importing.I試圖而不導入特定類的問題,別人絕對fine.I打開罐子和HSSFCell實際上存在於罐子裏。錯誤如下,並導致破壞單身人士。

java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFCell 
at java.lang.Class.getDeclaredMethods0(Native Method) 
at java.lang.Class.privateGetDeclaredMethods(Class.java:2365) 
at java.lang.Class.getDeclaredMethods(Class.java:1763) 
at java.beans.Introspector$1.run(Introspector.java:1265) 
at java.security.AccessController.doPrivileged(Native Method)............ 

可能的解決方案是什麼?

+0

Apache POI 3.0.2日期從2008年2月,所以它已超過4歲!你爲什麼不使用最近的版本? – Gagravarr 2012-03-08 16:16:42

回答

1

刪除'provided'作用域,然後使用默認(編譯)作用域。

提供意味着該jar在運行時不是必需的,因爲它將由某個容器「提供」。如果您使用編譯範圍,則應該在運行時在類路徑上提供這些jar。

0

我找到了另一個解決方案。如果我們按照提供的範圍給出範圍,我們可以在jBoss run.bat中添加類路徑,並將該類添加到jBoss lib文件夾中。

它工作在任何一種方式

+0

這確實有效,但並不是一個很好的解決方案。這可能會導致你的情況是:1)如果你想升級你的poi庫,你必須在JBoss和maven文件中完成,你可能會忘記這麼做。如果你忘記了,你會得到很難跟蹤的類解決問題2)如果你在服務器上運行其他應用程序,他們將在他們的類路徑中有這個jar,這是沒有必要的。通過讓maven處理應用程序的類而不是JBoss,你會遇到更少的問題。 – 2012-03-12 13:21:19